一、需要留意的坑
- echo命令:
雙引號中不能放入shell中起作用的字符,如 !,!用來執行歷史命令中的某一條,如 !30 表示執行第三十條命令:
例子詳解:
echo “hello world!”
echo -e “1\t2\t3”
echo ‘$PATH’
單引號,裏面的字符字面輸出,不會進行變量替換
- 查看某個進程的環境變量:
cat /proc/$PID/environ
如:
cat /proc/215/environ
cat /proc/$PID/environ | tr ‘\0’ ‘\n’
- 變量賦值
var=“value”
echo $var
echo &{var}
- export聲明瞭將由子進程繼承的一個或多個變量,執行這個命令後,當前shell腳步執行的任何應用程序都能獲得這個變量,如:
HTTP_PROXY=192.168.0.1:443
export HTTP_PROXY
unset HTTP_PROXY
export PATH="$PATH:/home/user/bin"
- 數學運算:
#!/bin/bash
no1=4
no2=5
let result=no1+no2
echo $result
let no1++
let no2--
echo $[ no1 + no2 ]
echo $[ $no1 + $no2 ]
let no1+=6
let no2-=5
echo $(( no1 + no2 ))
result=`expr 3 + 4`
echo ${result}
result=$(expr $no1 + 5)
echo $result
- 輸入輸出重定向:
ls /root > cmd.log 2>&1
ls /root &> cmd.log 2
- tee命令,輸出內容到文件和stdout:
ls /root | tee root.log
cat -n test.txt | tee test.log
cat -n test.txt2 | tee -a test.log # -a ,用於追加內容
- /dev/null會丟棄接收到的任何數據:
ls /root > /dev/null & 2>&1
- 重定向腳本的文件塊:
cat <<EOF > cat.txt
this is the content i want to input!
EOF
- alias的使用
alias
alias install=‘sudo apt install’
echo ’ alias install=“sudo apt install” ’ >> ~/.bashrc
執行非別名命令:
\ls 讓ls使用最原始的定義來執行
- 設置系統時間:
date -s ‘2019-06-04 17:40:35’
timedatectl set-time “YYYY-MM-DD HH:MM:SS”
ntpdate -s ntpserver.com
clock -w
hwclock -w
#!/bin/bash
start=`date +%s`
sleep 6
end=`date +%s`
echo hehe=$((end-$start))
[root@localhost ~]# date +%F-%T
2019-06-04-21:39:43