bash
括号区别
在Bash中,小括号 ()
, 中括号 []
, 大括号 {}
的用途和功能是不同的,它们各自有特定的语法和含义。
-
小括号
()
:-
在Bash中,小括号主要用于创建子shell。在小括号中的命令会在一个子shell中执行,这意味着其中定义的变量和环境不会影响到主shell。
-
例如:
(cd /some/directory; echo "In subshell: $PWD") echo "Outside subshell: $PWD"
这段代码中,小括号内的
cd
命令只在子shell中生效,不会改变主shell的当前工作目录。
-
-
中括号
[]
:-
中括号在Bash中通常用于条件测试和数组定义。
-
条件测试例如:
if [ "$var" = "value" ]; then echo "Condition true" fi
-
数组定义例如:
array=(element1 element2 element3)
-
注意:中括号内部的空格和换行符很重要,语法必须正确才能正常工作。
-
-
大括号
{}
:-
大括号在Bash中用于参数扩展、命令块、以及字符串操作。
-
参数扩展例子:
echo file{1..3}.txt
输出:
file1.txt file2.txt file3.txt
-
命令块例子:
{ command1 command2 }
可以将多个命令组合在一起作为一个单元执行。
-
字符串操作例如:
prefix="file" echo "${prefix}name"
输出:
filename
-
总结起来,在Bash中,小括号 ()
用于子shell,中括号 []
用于条件测试和数组定义,大括号 {}
则用于参数扩展、命令块和字符串操作。每种括号都有其特定的用途和语法规则,需要根据具体的需求来选择使用。
双引号里面可以放变量 ,但是解读不了 %A这一类
d
在这个脚本中,alice in wonderland
是作为参数传递给名为 alice
的函数的。让我们来解释一下这段脚本的执行过程:
脚本解释:
bash复制代码#!/bin/bash
function alice {
echo "alice : $@"
echo "$0: $1 $2 $3 $4"
echo "$# arguments"
}
alice in wonderland
-
脚本开头的
#!/bin/bash
:- 这是一个 shebang 行,指示系统使用 Bash 解释器来执行这个脚本。
-
function alice { ... }
:-
这段代码定义了一个名为
alice
的函数。 -
函数
alice
接收参数,并在函数体内输出这些参数的信息:
echo "alice : $@"
:输出传递给函数的所有参数。echo "$0: $1 $2 $3 $4"
:输出函数被调用时的前四个参数的具体值。echo "$# arguments"
:输出传递给函数的参数个数。
-
-
alice in wonderland
:- 这一行是对函数
alice
的调用,并传递了两个参数:in
和wonderland
。 - 因为在 Bash 中函数调用时可以不使用括号
()
,直接写函数名后跟参数即可。
- 这一行是对函数
执行结果:
当脚本执行时,函数 alice
被调用,并传入了参数 in
和 wonderland
。根据函数的定义,它会输出以下内容:
plaintext复制代码alice : in wonderland
./script.sh: in wonderland
2 arguments
这里的输出解释如下:
alice : in wonderland
:输出函数收到的所有参数。./script.sh: in wonderland
:输出函数脚本的名称以及前四个参数的具体值(在这个例子中,只有两个参数)。2 arguments
:输出传递给函数alice
的参数个数。
因此,alice in wonderland
这个部分是作为参数传递给函数 alice
的,用来演示函数如何处理传入的参数。