设置变量Linux

时间:2013-03-25 05:42:58

标签: linux shell ubuntu

我是linux shell脚本的新手,我试图设置以下变量来获取从键盘传入的文件夹路径的大小。我一直收到错误说无效选项。 Ť

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

谢谢!

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

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

 echo $size

1 个答案:

答案 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

作为单独的命令执行。