今天初步學習了一下linux下的shell編程,簡單記錄一下測試用例
1.編輯shell腳本文件如下:
#!/bin/bash
echo "hello bash linux"
echo "第0個參數:$0"
echo "第一個參數:$1"
echo "當前子shell進程:$$"
#pidarr=`ps x | awk '{print $1}'`
pidarr=$(ps x | awk '{print $1}')
echo $pidadd
for id in $pidarr
do
echo "$id"
done
2.保存為文件test.bash
3.使文件具有執行屬性,使用以下命令
chmod +x test.bash
示例腳本說明:
(1)第一行的#!/bin/bash 為腳本文件的固定格式,表示有bin目錄下的bash來執行
(2) 第8行的pidarr=$(ps x | awk '{print $1}')表示將ps x | awk '{print $1}' 的結果存入變量pidarr中,其中awk命令是個很有用的命令,詳細使用方法可以百度
改進程序:
#!/bin/bash
echo $1
pidarr=$(ps x | grep $1 | awk '{print $1}')
arr=($pidarr)
len=${#arr[*]}
if [ $len -ge 4 ]
then
# 循環kill所有名為$1的進程
indx=0
indmax=$[$len-3]
while [ $indx -lt $indmax ]; do
kill -9 ${arr[$idx]}
echo "kill -9 "${arr[$idx]}
indx=$[$idx + 1]
done
else
echo "該進程不存在"
fi
示例2:
#!/bin/bash
#==================================================
# name : getpid.sh
# brief : get pid accord to process name
# autor : Monkey.Knight
#==================================================
if [ $# -eq 1 ]
then
PROC_NAME="$1"
echo "server name:"${PROC_NAME}
num=`ps -ef | grep "${PROC_NAME}" | grep -v "grep" | grep -v "bash" | wc -l `
pidvar=`ps x | grep "${PROC_NAME}" | grep -v "grep" | grep -v "bash" | awk '{print $1}'`
echo $num
if [ $num -gt 0 ]
then
echo $pidvar
fi
else
echo "語法錯誤,正確語法如下:"
echo "getpidparam.sh process_name"
fi