检查存在脚本[不起作用]

检查存在脚本[不起作用]

我想检查路径目录是否存在,并包含一个示例目录,我有权查看其中的文件,然后出现以下消息:

No such file or directory /long_path/path1/abc.txt
No such file or directory /long_path/path2/xyz.txt

以下是一些代码:

#!/bin/sh
set -x
while read line; do
(ls -l $line)
done </something/pathlist.txt

在 pathlist.txt 中:

/long_path/path1/abc.txt
/long_path/path2/xyz.txt

我尝试了各种迭代......example2.sh 代码:

#!/bin/ksh
echo "Start!"
#entry="/something/pathlist.txt"
while read entry; do
    if [ -s $entry ];
    then
        echo "$entry exists"
    else
        echo "$entry does not exist..."
fi
done </something/pathlist.txt

example3.sh代码:

#!/bin/csh
while read entry; do
    if [ -e $entry ];
    then
        echo "$entry does not exist"
    else
        echo "$entry exists "
 fi
 done </something/pathlist.txt

请帮我!

答案1

有两件事正在发生。if list; then list; [elif list; then list;] ... [else list;] fi语句对退出状态进行操作。如果列表 #1 的退出状态为 0,则执行列表 2;否则转到列表 3。

如果代码成功,则测试命令(以方括号为别名)返回 0 [ -e /etc/passwd ]

因此从某种意义上来说,它与 C 和 Java 相同,但是相反。

修正脚本

#!/bin/mksh
#set -x
echo "Start!"

while IFS=  read entry; do

  if [ -e "$entry" ] ; then

  echo "$entry exist"

   else

   echo "$entry doesnt exist"

   fi

done < $HOME/pathlist.txt

另外,不要在喝咖啡之前写代码

答案2

  1. 您需要了解 Unix 中的重定向是如何工作的。因为您需要在调用脚本时使用重定向,但不需要在代码中使用。
  2. 我不确定,但我认为你需要替换#!/bin/ksh#!/bin/sh
  3. 利润!
#!/bin/sh
while read entry; do
    if [ -s $entry ];
    then
        echo "$entry exists"
    else
        echo "$entry does not exist..."
fi
done

保存然后。

chmod +x example2.sh
example2.sh < something/pathlist.txt

相关内容