反引号``是命令替换,命令替换是指Shell可以先执行反引号中的命令,将输出结果暂时保存,在适当的地方输出。
#!/usr/bin/env bash
PATH=`pwd`
echo $PATH
使用分号(;)可以在同一行上写两个或两个以上的命令。
#!/bin/bash
echo hello; echo there
filename=ttt.sh
if [ -e "$filename" ]; then # 注意: "if"和"then"需要分隔,-e用于判断文件是否存在
echo "File $filename exists."; cp $filename $filename.bak
else
echo "File $filename not found."; touch $filename
fi; echo "File test complete."
'STRING'
将会阻止STRING中所有特殊字符的解释
#!/bin/bash
echo $HOME
echo "$HOME"
echo '$HOME'
结果:
/c/Users/Administrator
/c/Users/Administrator
$HOME
在 Linux 的 Shell 脚本中,圆括号 ()
用于多种不同的目的。以下是一些常见的用法和示例:
圆括号可以用来创建子Shell。在子Shell 中执行的命令不会影响到父Shell 环境中的变量和设置。
示例:
#!/bin/bash
echo "Before: $VAR"
(
VAR="Changed in subshell"
echo "Inside subshell: $VAR"
)
echo "After: $VAR"
执行脚本:
bash script.sh
输出:
Before:
Inside subshell: Changed in subshell
After:
在这个示例中,VAR
在子Shell 中被修改,但这种修改不会影响到父Shell 中的 VAR
。
圆括号还可以用来将多个命令分组在一起。所有这些命令将在同一个子Shell 中执行。
示例:
#!/bin/bash
(
echo "First command"
echo "Second command"
) > output.txt
在这个示例中,First command
和 Second command
都会被写入到 output.txt
文件中,因为它们在一个子Shell 中执行,并且输出被重定向到文件。
在 Bash 中,圆括号用于定义数组。
示例:
#!/bin/bash
my_array=(one two three four)
echo "First element: ${my_array[0]}"
echo "Second element: ${my_array[1]}"
执行脚本:
bash script.sh
输出:
First element: one
Second element: two
圆括号还可以用来运行命令并将其返回值用于其他操作。例如,使用 $(command)
语法来捕获命令的输出并将其作为变量的值。
示例:
#!/bin/bash
current_date=$(date)
echo "Current date and time: $current_date"
执行脚本:
bash script.sh
输出:
Current date and time: [当前日期和时间]
在 Bash 中,圆括号也用于在 [[ ... ]]
中测试条件,特别是在复合条件和逻辑操作中。
示例:
#!/bin/bash
if [[ ( -d /tmp ) && ( -w /tmp ) ]]; then
echo "/tmp is a writable directory"
else
echo "/tmp is not a writable directory"
fi
条件测试表达式放在[ ]中。下列中的-lt (less than)
表示小于号:
a=5
if [ $a -lt 10 ]
then
echo "a: $a"
else
echo "a>10"
fi
# result: a: 5
if语句:
if condition
then
command1
command2
...
commandN
fi
if-elif-else
语法格式:
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi
for循环:
for loop in 1 2 3 4 5
do
echo "The value is: $loop"
done
while语句:
#!/bin/bash
int=1
while(( $int<=5 ))
do
echo $int
let "int++"
done