所以我正在编写一个简单的备份脚本,在调用时会将特定文件或当前目录中的所有文件备份到我的备份目录中。 这是我的剧本
#!/bin/bash
#verify if $1 is empty, if so, copy all content to backup directory
if [ -z "$1" ]
then
$files=ls
#Looping through files
for file in $files
do
cp $file ../backup/
done
#else copy files specified
else
$files=ls $1
#Looping through files
for file in $files
do
cp $file ../backup/
done
fi
我唯一得到的错误是:
./ backup:第7行:= ls:未找到命令
我不确定为什么脚本不会将ls识别为命令。有什么想法吗?
答案 0 :(得分:3)
要分配变量,您不需要美元符号:
files=foo
要将命令输出保存到var,您需要执行以下操作:
files=$(ls)
或
files=$(ls /path/to/some/dir)
答案 1 :(得分:0)
你应该尝试将ls放入`标记 - 更好,后面引用。像这样:
files=`ls`
这里有一点背景知识。查看this页面,了解有关shell环境中引号的更多信息:
后引号不用于引用字符。那个角色是 用于命令替换,它们之间的字符是 由shell执行,结果插入该行。
示例:
echo the date is `date`
答案 2 :(得分:0)
我看到两个错误:
这是一个简短的例子:
#!/bin/bash
files=`ls`
for file in $files
do
echo "file: $file"
done