Linux Bash目录复制脚本变量使用报错问题咨询
问题原因分析
你的报错完全是Bash变量赋值的语法错误导致的,具体拆解:
./run.sh: line 4: =: command not found错误原因
Bash里变量赋值的规则是等号两边不能有空格,如果你写了类似:SOURCE_DIR = "/home/admins/tryA" DEST_DIR = "/home/admins/tryB"这种写法会被Bash解析成:执行名为
SOURCE_DIR的命令,参数是=和"/home/admins/tryA",但系统里根本没有SOURCE_DIR这个命令,所以就会报=: command not found的错误。cp: target '' is not a directory错误原因
因为前面的变量没正确赋值,SOURCE_DIR和DEST_DIR都是空字符串,所以你执行的cp命令实际是传递了空参数,Bash把最后的空字符串当成目标,自然会提示目标不是目录。
正确写法示例
把变量赋值的空格去掉即可,同时复制目录内容建议加递归参数-r,并用双引号包裹变量避免路径含空格时出错:
#!/bin/bash SOURCE_DIR="/home/admins/tryA" DEST_DIR="/home/admins/tryB" cp -r "$SOURCE_DIR"/* "$DEST_DIR/"
内容的提问来源于stack exchange,提问作者eagerdev
相关产品推荐
相关产品推荐

