我们有一个 shell 脚本,它应该从文件中读取行,其中文件内容是文件名,我们需要找到这些文件名的路径并复制到不同的目录。在这里我们编写了下面的 shell 脚本,每次脚本的行为都不同。一次 while 循环只读取一行并退出。在第二个例子中,locate 命令对文件的第一行工作正常,而文件中的第二行不提供输出,它给出一个空白输出
Shell 脚本
#!/usr/bin/ksh
file="test.txt"
while IFS= read -r line
do
# display $line or do somthing with $line
echo "$line"
fileloc=`locate "$line"`
i=`echo $?`
if [ $? != 0 ]
then
echo "Unsuccessful"
else
echo $fileloc
cp $fileloc /home/user/PO_AUDIT
echo "Successful"
fi
done <"$file"
test.txt(以下是存储在我们服务器中的文件名)
11687892
11687893
答案1
为什么 IHS= 在这个地方?
如果该脚本需要 IFS,你可以考虑类似
OLD_IFS=$IFS
IFS=
... your script
IFS=$OLD_IFS
脚本的开头如下:
#!/usr/bin/ksh
file="test.txt"
while IFS= read -r line
do