Linux 带 for 的多行命令
Linux multiline command with for
我想测试和比较两个文件夹中的文件。为此,我使用了下一个命令
for FILE in folder_one/*; do
test -f folder_one_arch/$FILE && echo $FILE " exists" || echo $FILE " not exists"
cmp -s $FILE folder_one_arch/$FILE && echo "same" || echo "different";
done
但是这个命令不起作用,问题出在哪里?
问题来自 $FILE
:它包含一个路径,而您需要一个文件。
我建议你采用以下方法:有两个变量,PATH
是 for
循环中的变量,FILE
只是文件基名。
for PATH in folder_one/*; do
echo "PATH is $PATH "
FILE=${PATH##*/}
echo "FILE is now $FILE"
test -f folder_one_arch/$FILE && echo $FILE " exists" || echo $FILE " not exists"
cmp -s $PATH folder_one_arch/$FILE && echo "same" || echo "different";
done
我想测试和比较两个文件夹中的文件。为此,我使用了下一个命令
for FILE in folder_one/*; do
test -f folder_one_arch/$FILE && echo $FILE " exists" || echo $FILE " not exists"
cmp -s $FILE folder_one_arch/$FILE && echo "same" || echo "different";
done
但是这个命令不起作用,问题出在哪里?
问题来自 $FILE
:它包含一个路径,而您需要一个文件。
我建议你采用以下方法:有两个变量,PATH
是 for
循环中的变量,FILE
只是文件基名。
for PATH in folder_one/*; do
echo "PATH is $PATH "
FILE=${PATH##*/}
echo "FILE is now $FILE"
test -f folder_one_arch/$FILE && echo $FILE " exists" || echo $FILE " not exists"
cmp -s $PATH folder_one_arch/$FILE && echo "same" || echo "different";
done