这里对Bash完全不熟悉,实际上我已经像瘟疫一样避免了10年。 今天,没有办法解决它。
在对着键盘敲打几个小时之后,我发现命令中的sudo和任何bash变量都被剥离了。
所以我有类似
的东西somescript.sh
for i in {1..5}
do
filename=somefilenumber"$i".txt
echo $filename
done
如果我运行它,现在在命令行上
user@deb:~$ ./somescript.sh
我得到了预期的
somefilenumber1.txt
somefilenumber2.txt
somefilenumber3.txt
somefilenumber4.txt
somefilenumber5.txt
但如果我和sudo一起跑,就像 user @ deb:〜$ sudo ./somescript.sh
我会得到这个
somefilenumber{1..5}.txt
这是一个很大的问题,因为我正在尝试使用变量循环cp文件和rm文件。
所以这是带有cp和rm的代码
for i in {1..10}
do
filename=somefilenumber"$i".txt
echo $filename
cp "$filename" "someotherfilename.txt"
rm "$filename"
done
我最终得到了
cp: cannot stat 'somefilenumber{1..5}.txt': No such file or directory
rm: cannot remove 'somefilenumber{1..5}.txt': No such file or directory
我还需要运行sudo,因为其他需要它的程序。
这有什么办法吗? 即使没有其他任何需要sudo,我也不使用它,如果我确定要删除它,rm命令会提示我输入每个文件。重点是,当它运行数百个文件时,不要坐在这里绑在计算机上。
答案 0 :(得分:0)
你可以尝试用seq 1 10替换{1..10}:
for i in `seq 1 10`
do
filename=somefilenumber"$i".txt
echo $filename
cp "$filename" "someotherfilename.txt"
rm "$filename"
done
您的问题听起来好像root用户的环境有问题,您是否使用以下命令启动脚本: #!/斌/庆典 ?