我有一个用于读取数据和创建图像的bash脚本。我在for循环中为每个文件号(100-150)使用bash脚本来为每个文件编号创建图像。
#!/bin/bash
echo "PATH = $PATH";
echo "SHELL = $SHELL";
directory="../run-folders/Gritschneder_et_al_2009/3D_stirMin\=2_stirMax\=20_solWeight\=0.5/Ionization\ Data/dbl_files"
Resolution=100
for i in `seq 100 150`;
do
echo ./surf $directory $i $Resolution $Resolution $Resolution
done
for j in `seq 100 150`;
do
python plotsurfdens.py $directory $j $Resolution
done
rm -rf $directory/*.txt
当我运行脚本时,它会从可执行文件“surf”中生成以下消息,其中我检查了参数的数量是否符合预期: -
if(argc!=6) //TO check if no of arguments correct
cout<<"Usage : ./read filedirectory fileno N[X] N[Y] N[Z]"<<endl;
这不应该发生,因为脚本中传递的参数数量为6。此外,当我回应运行“冲浪”的命令并复制打印的命令时,它的工作原理。这意味着当我手动输入我在脚本中作为一行提供的命令时,它可以工作但不在脚本中。为什么会这样?在此先感谢:)
答案 0 :(得分:1)
展开变量值时不会处理转义。从directory
赋值中取出反斜杠,并在使用时引用该变量。
#!/bin/bash
echo "PATH = $PATH";
echo "SHELL = $SHELL";
directory="../run-folders/Gritschneder_et_al_2009/3D_stirMin=2_stirMax=20_solWeight=0.5/Ionization Data/dbl_files"
Resolution=100
for i in `seq 100 150`;
do
echo ./surf "$directory" $i $Resolution $Resolution $Resolution
done
for j in `seq 100 150`;
do
python plotsurfdens.py "$directory" $j $Resolution
done
rm -rf "$directory"/*.txt