我是 linux shell 脚本的新手,我正在尝试设置以下变量来获取从键盘传入的文件夹路径的大小。我不断收到错误消息,提示选项无效。吨
谁能告诉我我做错了什么?当我删除“大小”变量并保持原样时,错误消失了。
谢谢!
#!/bin/bash
echo -e "\nEnter the first directory (relative path)"
read dir1
size=find $dir1 -type f | wc -l
echo $size
它应该是:
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
作为单独的命令执行。