n=$1
for ((i=1;i<=n;++i)); do
touch "photo$1.gif"
touch "photo$2.gif"
touch "photo$3.gif"
done
//这是我的create_files脚本,我想制作相同的多个副本,我不这么认为 它的权利
我想将.gif文件移动到脚本执行的目录中,这是我的mvfile脚本
ext=.gif
dir=$photo // not sure to see if directory exist yet
if [ -d "$photo"];then
echo "file exists"
if [ ! od "$photo"]; then
mkdir photo #// make directory in case it does not exist
fi
for file in "*.gif"; do
my $file $dir
done
我试着看看它是否有效继续为此行添加语法错误
答案 0 :(得分:1)
我希望你想要这样的东西 -
create_files
脚本:
#!/bin/bash
n=$1
for ((i=1;i<=n;++i))
do
touch "photo${i}.gif"
done
move_files
脚本:
#!/bin/bash
FILES=`ls -1 | grep ".gif"`
DIR="photos"
if [ -e $DIR ]
then
echo "$DIR exists"
else
mkdir $DIR
mv $FILES $DIR
fi
答案 1 :(得分:1)
您 关闭,位关闭。什么给你带来问题的是你分配dir=$photo
然后测试$photo
而不是$dir
(虽然效果应该是相同的,因为你将在你的dir
中使用mv $file $dir
$dir
命令,您是更好的服务器测试mv
)。由于您使用gif
,其中第二个参数是目录,因此您可以将所有mv *.gif $dir
文件移动到sngle命令中的新位置:
dir="$photo" # Always quote string variables!
if [ -d "$dir" ]; then # test if "$dir" (quoted) exists
echo "dir: '$dir' exists" # provide output showing success (not reqd)
mv *.gif "$dir" # move all .gif files in $PWD to "$dir"
else
echo "dir: '$dir' not found" # provide feedback on failure
fi
这就是你所需要的一切。现在在脚本中进行设置:
dir="$photo"; [ -d "$dir" ] && mv *.gif "$dir" || echo "dir: '$dir' not found"
或简短版本:
{{1}}