我是linux shell脚本的新手,我试图设置以下变量来获取从键盘传入的文件夹路径的大小。我一直收到错误说无效选项。 Ť
谁能告诉我我做错了什么?当我删除“size”变量并保持原样时,错误消失。
谢谢!
#!/bin/bash
echo -e "\nEnter the first directory (relative path)"
read dir1
size=find $dir1 -type f | wc -l
echo $size
答案 0 :(得分:3)
应该是:
size=$(find $dir1 -type f | wc -l)
使用$()
表示法意味着应该运行命令并将其输出放在该行上。
这是因为为变量分配了文字文本值。
myvar=foo
将字符串“foo”放入myvar
,而不是变量foo的值或foo命令的结果。
myvar=$foo
会将变量foo
的值放入myvar
。和
myvar=$(foo)
会将运行命令foo
的结果放入myvar。
shell语法的一个特殊部分允许您在运行命令之前分配变量值,并且仅为该一个命令设置这些变量值。它看起来像这样:
x=foo1 y=foo2 command parameter ...
你写行的方式
size=find $dir1 -type f | wc -l
size
的值为“find”,然后是
$dir1 -type f # this won't be a valid command
作为单独的命令执行。