我正在尝试将一个文件复制到其他目录,并在调用中断时收到错误消息。
剧本:
#!/bin/bash
PATH=~/MkFile/
exitfn () {
trap SIGINT # Resore signal handling for SIGINT
echo ; echo 'Called ctrl + c ' # Growl at user,
cp ./BKP/temp.txt $PATH/backup.txt
exit # then exit script.
}
trap "exitfn" INT # Set up SIGINT trap to call function.ii
read -p "What? "
echo "You said: $REPLY"
# reset all traps##
trap - 0 SIGINT
输出:
./signal.sh
What? ^C
Called ctrl + c
./signal.sh: line 9: cp: command not found
你知道这个剧本有什么问题吗?
答案 0 :(得分:12)
您修改了PATH变量的原因。也许您只想添加另一条路径:
PATH=$PATH:~/MkFile/
或者如果在Bash
中,只需使用追加运算符:
PATH+=:~/MkFile/
想想看,我不认为你真的想要使用PATH变量。只需使用其他参数名称:
DIR=~/MkFile/
有些人会建议使用小写字母以避免与内置shell变量发生冲突:
path=~/MkFile/
从手册:
PATH A colon-separated list of directories in which the shell looks for commands. A zero-length (null) directory name in the value of PATH indicates the current directory. A null directory name may appear as two adjacent colons, or as an initial or trailing colon.
答案 1 :(得分:6)
在Linux中,$ PATH是一个环境变量,它包含搜索可执行文件的目录(例如参见http://www.linfo.org/path_env_var.html)。
我真的不知道你的目的是改变PATH变量。如果是,你应该遵循konsolebox的答案,但如果没有,你应该避免在你的脚本中使用环境变量作为变量。请尝试使用:
路径=〜/ MkFile /
或
mypath中=〜/ MkFile /