#!/bin/sh
for file in /home/*
do
if [ "{$file}" != "/home/lost+found" ]
then
touch $file/FILE1
done
我想要实现的是我遍历所有 /home/ 目录并在每个目录中创建一个文件除了在/home/丢失+找到。我究竟做错了什么?
答案1
没什么,您错过了fi
终止 if 语句并{$file}
扩展为{/home/somedir}
, 并带有文字大括号。带大括号的参数扩展为${file}
,即美元符号位于大括号之外。
此外,该模式/home/*
将匹配所有文件(而不仅仅是目录),因此touch
如果有任何文件,您将会收到错误。中的内容可能不多/home
,但很容易将模式更改为/home/*/
仅匹配目录。后面的斜杠将成为变量的一部分,因此在比较时考虑到这一点。 (或者,也可以测试[ -d "$file" ]
。)
另外,一般来说,您要引用"$file"
.或者也许dir
放在这里更合适。
#!/bin/sh
for dir in /home/*/ ; do
if [ "$dir" != "/home/lost+found/" ] ; then
touch "$dir/FILE1"
fi
done