0

我是 linux shell 脚本的新手,我正在尝试设置以下变量来获取从键盘传入的文件夹路径的大小。我不断收到错误消息,提示选项无效。吨

谁能告诉我我做错了什么?当我删除“大小”变量并保持原样时,错误消失了。

谢谢!

#!/bin/bash 
echo -e "\nEnter the first directory (relative path)"
read dir1

size=find $dir1 -type f | wc -l 

 echo $size
4

1 回答 1

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

作为单独的命令执行。

于 2013-03-25T05:44:38.677 回答