我希望更多的专家会发现一些明显的语法错误,或者能够帮助我解决错误。
剧本的基本理念: 我有一个shell脚本,它将读取list.txt并查找我需要的文件或文件夹,然后复制到另一个目录。
工作环境 Ubuntu 12.04
问题/错误: 在我修改之前,我有一个演示脚本,可以复制所有正常工作的文件。但是,当我修改脚本时,它给了我这个错误: tar:XXXXX.ko无法统计:没有此类文件或目录 tar:由于先前的错误而退出失败状态
我唯一改变的是列表的路径。
Shell脚本代码如下所示
#!/bin/sh
cd /home/leo/Desktop/Script_testing
INSTALL_PATH=./output/.install/
NAND2_PATH=./output/nand1-2_2
if [ ! -d $NAND2_PATH ]; then
mkdir $NAND2_PATH
fi
if [ ! -f /home/leo/Desktop/Script_testing/list2.txt ]; then
echo "error : list_2 not found : "
exit
fi
cd $INSTALL_PATH
tar cf - `cat /home/leo/Desktop/Script_testing/list2.txt` | ( cd ../../../${NAND2_PATH} ; tar xf - )
这是我的list2.txt:
./app_drvier/led/led.ko
./Desktop/testing/beeper.h
./Desktop/testing/beeper.c
./bin/usb_plug.sh
./etc/hostname
当我运行./mycp.sh
目录“nand1-2_2:将在输出下创建,但是,我提到的错误显示
tar : XXXXX cannot stat : No such file or directory
tar : Exiting with failure status due to previous errors
希望有人可以帮助我。非常感谢你
更新
运行sh -x mycp.sh
后,结果如下
+ cd /home/dragon/Desktop/Script_testing
+ INSTALL_PATH=./output/.install/
+ NAND2_PATH=./output/nand1-2_2
+ [ ! -d ./output/nand1-2_2 ]
+ [ ! -f /home/dragon/Desktop/Script_testing/list2.txt ]
+ cd ./output/.install/
nand1-2_2.sh: 12: cd: can't cd to ./output/.install/
+ cd ../../.././output/nand1-2_2
nand1-2_2.sh: 13: cd: can't cd to ../../.././output/nand1-2_2
+ tar xf -
+ cat /home/dragon/Desktop/Script_testing/list2.txt
+ tar cf - ./app_drvier/ontech_led/onetech.led.ko
tar: ./app_drvier/ontech_led/onetech.led.ko: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
答案 0 :(得分:1)
错误消息显示文件./app_drvier/ontech_led/onetech.led.ko不存在。这并不奇怪,因为之前执行的两个cd命令都失败了。
根本原因似乎是./output/.install目录不存在或者你没有chdir权限。
我建议您始终评估cd命令的退出状态。如果cd失败,继续运行脚本是没有意义的。
例如,你可以写:
cd $INSTALL_PATH || exit 1