国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Shell腳本參數(shù)獲取的兩種方式

這篇具有很好參考價值的文章主要介紹了Shell腳本參數(shù)獲取的兩種方式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

一、Shell 參數(shù)獲取的兩種方式

方式一

示例

新建一個test.sh文件

#!/bin/bash
echo "shell 名稱 = $0"
echo "參數(shù)1 = $1"
echo "參數(shù)2 = $2"
echo "參數(shù)3 = $3"
echo "參數(shù)4 = $4"
echo "參數(shù)5 = $5"

執(zhí)行腳本 : sh test.sh 5 6 3 6 2

  • 輸出的結(jié)果:

  • shell 名稱 = test.sh
    參數(shù)1 = 5
    參數(shù)2 = 6
    參數(shù)3 = 3
    參數(shù)4 = 6
    參數(shù)5 = 2
    
  • 使用該方式有兩點(diǎn)需要注意的地方:“$0” 表示的是腳本名稱本身

    • 優(yōu)點(diǎn) : 獲取參數(shù)方便、簡潔
    • 缺點(diǎn) :必須按照指定的順序輸入?yún)?shù),中間不能漏參數(shù)。否則參數(shù)將會產(chǎn)生錯亂。

方式二 使用 getopts 方式獲取

  • 如果需要實(shí)現(xiàn)類似 job_3.sh -f -d 指定參數(shù)值的方式,則推薦使用此種方式。
    使用該方式需要使用到Shell內(nèi)置的函數(shù)"getopts"。
    在使用之前你需要知道一下幾個內(nèi)置參數(shù)的意義:
    1.optstring option :字符串,當(dāng)中為參數(shù)選項(xiàng),會逐個匹配。
    2.varname :每次匹配成功的選項(xiàng)
    3.arg :參數(shù)值
    4.$OPTIND :option index,會逐個遞增,初始值為1
    5.$OPTARG :option argument,不同情況下會有不同的值

該函數(shù)的具體使用方式 : getopts [option[:]] VARIABLE
參數(shù)說明:

  • [option[:]] 表示參數(shù),以"??b:c:"的方式設(shè)置
    #####注意細(xì)節(jié):
  1. 以":"開頭時:getopts不會提示錯誤信息,會區(qū)分invalid option錯誤和miss option argument,兩種錯誤的值不一樣。invalid option錯誤時,VARIABLE會被設(shè)為*?。為出問題的option。miss option argument時,VARIABLE會被設(shè)為*。$OPTARG為出問題的option。
  2. 不以":"開頭時:getopts會提示錯誤信息。會根據(jù)invalid option錯誤和miss option argument。提示兩種不同的錯誤。VARIABLE都會被設(shè)為?。$OPTARG都為空。
  3. 如果option后面跟了":"表示該option可以接收參數(shù),參數(shù)(argument)會被放在$OPTARG中。

示例getopt.sh

#!/bin/bash

while getopts ":a:p:n:s:" opt
do
    case $opt in
        n)
            echo "$OPTARG"
        ;;
        s)
            echo "$OPTARG"
        ;;
        a)
            echo "$OPTARG"
        ;;
        p)
            echo "$OPTARG"
        ;;
        *)
            echo "未知參數(shù)$opt"
            echo "參數(shù)值$OPTARG"
        ;;
        ?)
            echo "未知參數(shù)$opt"
            echo "參數(shù)值$OPTARG"
        ;;
    esac
done
  • 執(zhí)行:sh getopt.sh -a 12 -p 32 -s string -n 你好 -r 世界

  • 輸出:

12
32
string
你好
install.sh: 非法選項(xiàng) -- r
未知參數(shù)?
參數(shù)值

可選參數(shù)示例

  • 腳本可以傳1到多個參數(shù)該如何處理?如下面例子:
#!/bin/bash
readonly CURR=$(readlink -m $(dirname $0))
#
path=`sed -n '/^\[path/{:a1;n;/^$/q;p;ba1}' $CURR/../conf/extract_config | sed 's/[ \t]//g' `
file=` sed -n '/^\[file/{:a1;n;/^$/q;p;ba1}' $CURR/../conf/extract_config | sed 's/[ \t]//g' `
date='date -d yesterday + '%Y%m%d'`
#/cib/etl_job
app_path=` sed -n '/^\[app_path/{:a1;n;/^$/q;p;ba1}' $CURR/../conf/extract_config | sed 's/[ \t]//g' `
today=`date + %Y%m%d`

show_usage=" args:[ -p,-f,-d,-h] [--path, --file, --date, --help]"
GETOPT_ARGS=`getopt -o p:f:d:h -al path:file:date:qhlep --"$@"eval set -- "$GETOPT_ARGS"
while [ -n "$1" ]
do
   case "$1" in
      -p|--path) test -z $2 || path=$2; shift 2;;
      -f|--file)    test -z $2 || file=$2; shift 2;;
      -d|--date) test -z $2 || date=$2; shift 2;;
     -h|--help)cat  $CURR/../conf/readme1 && exit 0; shift 2;;
--) break;;
*) echo $1 , $2; shift 1;;
esac
done

這段Shell代碼是一個使用getopt解析命令行參數(shù)的示例。

代碼解釋如下:

  1. GETOPT_ARGS=$(getopt -o p:f:d:h -al path:file:date:help -- "$@")

    • 使用getopt命令解析命令行參數(shù),并將結(jié)果保存到GETOPT_ARGS變量中。
    • -o后面跟短選項(xiàng),例如p:f:d:h表示短選項(xiàng)為-p、-f、-d-h
    • -l后面跟長選項(xiàng),例如path:file:date:help表示長選項(xiàng)為--path--file、--date--help
    • --表示選項(xiàng)結(jié)束,之后的參數(shù)將被視為位置參數(shù)。
    • "$@"表示將腳本接收到的所有參數(shù)傳遞給getopt命令。
  2. eval set -- "$GETOPT_ARGS"

    • GETOPT_ARGS的值設(shè)置為新的參數(shù)列表,相當(dāng)于重置了腳本中的位置參數(shù)。這樣,后續(xù)的$1、$2等就可以用于處理解析后的命令行參數(shù)。
  3. while [ -n "$1" ]

    • 這是一個循環(huán)語句,用于逐個處理命令行參數(shù),直到所有參數(shù)都被處理完畢。
  4. case "$1" in ... esac

    • 這是一個條件判斷語句,根據(jù)當(dāng)前參數(shù)的值執(zhí)行相應(yīng)的操作。
  5. -p | --path) test -z $2 || path=$2; shift 2;;

    • 當(dāng)參數(shù)是-p--path時,將下一個參數(shù)(即$2)賦值給path變量,并通過shift 2將已處理的兩個位置參數(shù)移除。
  6. -f | --file) test -z $2 || file=$2; shift 2;;

    • 當(dāng)參數(shù)是-f--file時,將下一個參數(shù)(即$2)賦值給file變量,并通過shift 2將已處理的兩個位置參數(shù)移除。
  7. -d | --date) test -z $2 || date=$2; shift 2;;

    • 當(dāng)參數(shù)是-d--date時,將下一個參數(shù)(即$2)賦值給date變量,并通過shift 2將已處理的兩個位置參數(shù)移除。
  8. -h | --help) cat $CURR/../conf/readme1 && exit 0; shift 2;;

    • 當(dāng)參數(shù)是-h--help時,打印readme1文件的內(nèi)容并退出腳本。
  9. --) break;;

    • 當(dāng)遇到--標(biāo)記時,停止循環(huán)。
  10. *) echo $1 , $2; shift 1;;

    • 對于其他未匹配的參數(shù),打印參數(shù)的值,并通過shift 1將已處理的一個位置參數(shù)移除。

通過以上步驟,腳本會逐個處理命令行參數(shù),并根據(jù)參數(shù)的類型進(jìn)行相應(yīng)的操作??梢愿鶕?jù)實(shí)際需求修改每個選項(xiàng)的處理邏輯和操作。


file=sed -n '/^\[file/{:a1;n;/^$/q;p;ba1}' $CURR/../conf/extract_config | sed 's/[ \t]//g' 這個命令什么含義?
這個命令的含義是從指定文件中提取包含[file開頭的行,并將其保存到變量file中。下面是對該命令的解釋:

  1. sed -n '/^\[file/{:a1;n;/^$/q;p;ba1}' $CURR/../conf/extract_config:這部分命令使用sed工具從文件$CURR/../conf/extract_config中提取特定的行。

    • sed -n:關(guān)閉默認(rèn)輸出,并使用靜默模式。
    • /^\[file/:匹配以[file開頭的行。
    • :a1:定義一個標(biāo)簽a1,用于后續(xù)跳轉(zhuǎn)。
    • n:讀取下一行。
    • /^$/q:如果讀取的行是空行,則退出命令執(zhí)行。
    • p:打印滿足條件的行。
    • ba1:跳轉(zhuǎn)到標(biāo)簽a1,實(shí)現(xiàn)循環(huán)。
  2. sed 's/[ \t]//g':這部分命令使用sed工具刪除變量file中的空格和制表符。

    • s/[ \t]//g:將空格和制表符替換為空字符,并應(yīng)用于整個字符串。

最終,通過這個命令,將文件$CURR/../conf/extract_config中以[file開頭的行提取出來,并存儲到變量file中。然后對變量file中的空格和制表符進(jìn)行刪除操作。

二、Shell腳本之shift用法

shift命令用于對參數(shù)的移動(左移),通常用于在不知道傳入?yún)?shù)個數(shù)的情況下依次遍歷每個參數(shù)然后進(jìn)行相應(yīng)處理(常見于Linux中各種程序的啟動腳本)。

示例1:

依次讀取輸入的參數(shù)并打印參數(shù)個數(shù):

  • run.sh

    • #!/bin/bash
      
      while [ $# != 0 ];do
      
      echo "第一個參數(shù)為:$1,參數(shù)個數(shù)為:$#"
      
      shift
      
      done
      
  • 輸入如下命令運(yùn)行:run.sh a b c d e f

  • 結(jié)果顯示如下:

  • 第一個參數(shù)為:a,參數(shù)個數(shù)為:6
    
    第一個參數(shù)為:b,參數(shù)個數(shù)為:5
    
    第一個參數(shù)為:c,參數(shù)個數(shù)為:4
    
    第一個參數(shù)為:d,參數(shù)個數(shù)為:3
    
    第一個參數(shù)為:e,參數(shù)個數(shù)為:2
    
    第一個參數(shù)為:f,參數(shù)個數(shù)為:1
    
  • 從上可知 shift(shift 1) 命令每執(zhí)行一次,變量的個數(shù)($#)減一(之前的$1變量被銷毀,之后的$2就變成了$1),而變量值提前一位。

    同理,shift n后,前n位參數(shù)都會被銷毀,比如:

    • 輸入5個參數(shù): abcd e

那么$1=a,$2=b,$3=c,$4=d,$5=e,執(zhí)行shift 3操作后,前3個參數(shù)a、b、c被銷毀,就剩下了2個參數(shù):d,e(這時d=$1,e=$2,其中d由$4—>$1,e由$5—>$2),參考示例如下:

示例2:
#!/bin/bash

echo "參數(shù)個數(shù)為:$#,其中:"

for i in $(seq 1 $#)

do

eval j=\$$i

echo "第$i個參數(shù)($"$i"):$j"

done

shift 3

echo "執(zhí)行shift 3操作后:"

echo "參數(shù)個數(shù)為:$#,其中:"

for i in $(seq 1 $#)

do

通過eval把i變量的值($i)作為變量j的名字

eval j=\$$i

echo "第$i個參數(shù)($"$i"):$j"

done

輸出結(jié)果為:文章來源地址http://www.zghlxwxcb.cn/news/detail-525114.html

參數(shù)個數(shù)為:5,其中:

第1個參數(shù)($1):a

第2個參數(shù)($2):b

第3個參數(shù)($3):c

第4個參數(shù)($4):d

第5個參數(shù)($5):e

執(zhí)行shift 3操作后:

參數(shù)個數(shù)為:2,其中:

第1個參數(shù)($1):d

第2個參數(shù)($2):e

三、調(diào)度作業(yè)shell腳本示例

#!/bin/bash
readonly CURR=$(readlink -m $(dirname $0))
#
path=`sed -n '/^\[path/{:a1;n;/^$/q;p;ba1}' $CURR/../conf/extract_config | sed 's/[ \t]//g' `
file=` sed -n '/^\[file/{:a1;n;/^$/q;p;ba1}' $CURR/../conf/extract_config | sed 's/[ \t]//g' `
date='date -d yesterday + '%Y%m%d'`
#/cib/etl_job
app_path=` sed -n '/^\[app_path/{:a1;n;/^$/q;p;ba1}' $CURR/../conf/extract_config | sed 's/[ \t]//g' `
today=`date + %Y%m%d`
mark=$1
show_usage="args: [-p, -f, -d, -h] [--path, --file, --date, --help]"
GETOPT_ARGS=`getopt -o p:f:d:h -al path:file:date:help -- "$@"`
eval set -- "$GETOPT_ARGS"
while [ -n "$1" ]
do
 case "$1" in
  -p|--path) test -z $2 || path=$2 shift 2;;
  -f|--file) test -z $2 || path=$2 shift 2;;
  -d|--date) test -z $2 || path=$2 shift 2;;
  -h|--help) cat $CURR/../conf/readme1 && exit 0; shift 2;;
  --) break;
  *) echo $1,$2;shift 1;;
  esac
done

# 日志格式
log_path="/ciblog/etl_job/$date"
flg_bak_path='/cib/etl_job/flg_bak'
flg_path='/cib/etl_job/flg'
data_path='/sftp/data'
now_date=`date -d now + "%Y%m%d%"`
> $log_path/$file"_"$date.log
echo "**********************作業(yè)1執(zhí)行日志*******************" >> $log_path/$file"_"$date.log
echo "" >>$log_path/$file"_"$date.log
echo "作業(yè)1開始執(zhí)行..." >>$log_path/$file"_"$date.log
echo "文件名稱:$file"  >>$log_path/$file"_"$date.log
echo "文件日期:$date"  >>$log_path/$file"_"$date.log
echo "執(zhí)行日期:$now_date"  >>$log_path/$file"_"$date.log

#應(yīng)付模塊

#連接數(shù)據(jù)庫參數(shù)
#用戶名
user="cap4j"
#密碼
pass = cat $app_path/bin/passwd

function decrypt_passwd{
 tmp_pass=$1
 password=`echo $tmp_pass|base64 -d`
 
}
decrypt_passwd $pass

# ip
#host="16.7.xx.xx"
host="10.7.48.232"
#庫名
db_name="etl_job"
#sql語句:查詢當(dāng)前文件,指定日期的數(shù)據(jù)狀態(tài)
sql1="select final_status from all_table where table_name='$file' and data_time='$date'; "

# 執(zhí)行sql語句
data_status=`mysql -h "$host" -u "$user" -p "$password" -D"$db_name" -s -e "$sql1" `
#echo "data_status ==> " $data_status

#打印日志
if  [ $? -eq 0 ];then
  echo "文件狀態(tài)查詢成功!" >>$log_path/$file"_"$date.log
  echo "文件狀態(tài)查詢成功: $data_status " 
else
  echo "文件狀態(tài)查詢失??!" >>$log_path/$file"_"$date.log
  exit 1
fi

# 根據(jù)數(shù)據(jù)狀態(tài)執(zhí)行不同的邏輯
if [ "$data_status" -eq 1 ]
	# 說明當(dāng)下日期的文件,已經(jīng)跑過了,這個是要重跑
	then
	  #執(zhí)行重跑邏輯
	  echo "$file 文件 $date 號的狀態(tài)為1,執(zhí)行的是重跑任務(wù)!" >> $log_path/$file"_"$date.log
	  #重新復(fù)制一份flg文件
	case ${mark} in
	  "y"){
	  echo "$file 特殊文件,特殊處理!"
	  echo "生成新的${data_path}/"$file"."$date".000000.0000.flg文件"
	  /bin/cp -rf ${flg_path}/"file".flg  ${data_path}/$file"."$date".000000.0000.flg
	  };;
	esac

	# 刪除之前跑過的痕跡
	rm -rf $path/gzip/"$file"."$date".000000.0000.data

	#rm -rf $path/gzip/"$file"."$date".000000.0000.data
	#rm -rf $path/gzip/"$file"."$date".000000.0000.flg

	#打印日志
	if [ $? -eq 0 ];then
	   echo "原來的過程文件刪除成功!" >> $log_path/$file"_"$date.log
	else
	   echo "原來的過程文件刪除失?。? >> $log_path/$file"_"$date.log
	   exit 1
	fi
	# 執(zhí)行當(dāng)前作業(yè)
	etl_extract(){
	 # "獲取字符串下標(biāo)..." >> $log_path/$file"_"$date.log
	 sleep 1
	 #echo $date
	  #echo $path
	 echo $file
	 bool=`ls $path | grep "$file.$date" | wc -l `
	 if [ $bool == 0 ];then
	  echo "沒有數(shù)據(jù)文件!"
	  exit 1
	 fi

	# 解壓到指定路徑
	gzip -cd $path/"$file"."$date".000000.0000.dat.gz > $path/gzip/"$file"."$date".000000.0000.dat
	# 將解壓出來的文件進(jìn)行替換
	sed -i 's/|/ /g' $path/gzip/"$file"."$date".000000.0000.dat

	#打印日志
	if [ $? -eq 0 ];then
	   echo "文件解壓成功!" >>$log_path/$file"_"$date.log
	   echo "文件解壓成功!"
	 else
	   echo "文件解壓失敗!" >>$log_path/$file"_"$date.log
	   echo "文件解壓失敗!"
	   exit 1
	fi

	# 轉(zhuǎn)碼
		# iconv -f iso-8859-1 -t UTF-8 $path/../gzip/"$file"."$i".000000.0000.dat -o $path/../transcoding/"$file"."$i".000000.0000.dat
		# iconv -f gb2312 -t UTF-8 $path/../gzip/"$file"."$i".000000.0000.dat -o $path/../transcoding/"$file"."$i".000000.0000.dat
		# 打印日志
		# esle
			# echo ""$file"."$i"文件轉(zhuǎn)碼失敗!" >> $log_path/$file"_"$date.log
			#exit 1
		#fi
		# mv $path/../transcoding/"$file"."$i".000000.0000.dat  $path/../data/"$file"."$i".000000.0000.dat
		# cp $path/"$file"."$i".000000.0000.flg  $path/../data/"$file"."$i".000000.0000.flg

	}

	echo "============================執(zhí)行時間:[ `date` ]============================" >> $log_path/$file"_"$date.log
	etl_extract
	echo "" >> $log_path/$file"_"$date.log
	echo "============================結(jié)束時間:[ `date` ]============================" >> $log_path/$file"_"$date.log
	echo "" >> $log_path/$file"_"$date.log
else 
	  # 沒有跑過,是跑批邏輯
	  echo "$file 文件 $date 號的狀態(tài)為0,執(zhí)行的是跑批任務(wù)!" >> $log_path/$file"_"$date.log
	  # 查找這個文件所有狀態(tài)為0的日期
	  echo "正在查找 $file 文件所有的數(shù)據(jù)狀態(tài)...." >> $log_path/$file"_"$date.log
	  # 從etl_job庫中查詢all_table表中該文件的數(shù)據(jù)最終狀態(tài)為零的所有日期
	  sql2="select data_time from all_table where table_name='$file' and final_status=0 order by data_time;"
	  #執(zhí)行sql語句
	  sql2_result=`mysql -h "$host" -u "$user" -p "$password" -D"$db_name" -s -e "$sql2" `
	  echo "$sql2_result" >> $log_path/$file"_"$date.log
	  echo "$file 文件有以上時間的數(shù)據(jù)沒有處理!"  >>$log_path/$file"_"$date.log
	  data_file=`ls $path`   
	  # 將能夠執(zhí)行的文件日期置空
	  > $app_path/date/$date/date/"$file".txt
	 for i in $sql2_result
	 do
		  a=0
		  for j in $data_file
			  do 
			   if [ "$file"."$i".000000.0000.flg = "$j" ] 
			   then
				a =1
				echo "$i 號的數(shù)據(jù)可以跑!" >> $log_path/$file"_"$date.log
				echo "$i 號的數(shù)據(jù)可以跑!"
				echo "$i" >> $app_path/date/$date/date/"$file".txt
			   fi
			  done
		 if [ $a -eq 0 ] 
		 then
		 echo "$i 號的數(shù)據(jù)沒到!" >> $log_path/$file"_"$date.log
		 echo "$i 號的數(shù)據(jù)沒到!"
		 fi 
	done

	# 判斷有沒有可執(zhí)行的日期
	 numbers =`cat $app_path/date/"$date"/date/"$file".txt | wc -l `
	 if [ $numbers -eq 0 ]
	 then
	  echo "沒有可以執(zhí)行的數(shù)據(jù)" >> $log_path/$file"_"$date.log
	  exit 1
	 else
	   date_num=`cat  $app_path/date/"$date"/date/"$file".txt ` 
	   for i in $date_num
	   do
		case ${mask} in
		"y"){
		echo "特殊文件,特殊處理!"
		# 判斷flg文件有沒有備份過
		if [ ! -f "${flg_bak_path}/${file}.${i}.000000.0000.flg" ];then
		 #沒有當(dāng)前flg,則將/sftp/data/"$file.$i.000000.0000.flg 移動到/cib/etl_job/flg_bak"
		 echo "${flg_bak_path}/${file}.${i}.000000.0000.flg 正在備份..."
		 mv ${data_path}/${file}.${i}.000000.0000.flg ${flg_bak_path}
		 if [ $? -eq 0 ];then
		  echo "${file}.${date}.000000.0000.flg 文件備份成功!"
		 else
		  echo "${file}.${date}.000000.0000.flg 文件備份失??!"
		  exit 1
		 fi
		else
		 echo "${flg_bak_path}/${file}.${i}.000000.0000.flg存在,不需要備份!"	
		fi
		# 復(fù)制新的flg文件
		echo "生成新的"$file"."$i".000000.0000.flg文件!" 
		/bin/cp -rf ${flg_path}/"file".flg  ${data_path}/$file"."$i".000000.0000.flg
		};;
		esca
	   # 刪除之前跑過的痕跡
	   rm -rf  $path/gzip/"$file"."$i".000000.0000.data
	   
	   #
	   if [ $? -eq 0 ];then
		 echo "初始化成功!" >> $log_path/$file"_"$date.log
	   else
		 echo "初始化失??!" >> $log_path/$file"_"$date.log 
		 exit 1
	   fi
	   etl_extract(){
		 bool=` ls $path | grep "$file.$i" | grep wc -l `
		 if [ $bool == 0 ];then
		   echo "沒有數(shù)據(jù)文件!"
		   exit 1
		 fi
		 
		# 解壓到指定路徑
		gzip -cd  $path/"$file"."$i".000000.0000.dat.gz > $path/gzip/"$file"."$i".000000.0000.dat	
		# 將解壓出來的文件進(jìn)行替換
		sed -i 's/|/ /g' $path/gzip/"$file"."$i".000000.0000.dat
		# 打印日志
		if [ $? -eq 0 ];then
			echo ""$file"."$i"文件解壓成功!" >> $log_path/$file"_"$date.log
		else
			echo ""$file"."$i"文件解壓失??!" >> $log_path/$file"_"$date.log
			exit 1
		fi
		
		#轉(zhuǎn)碼
		# iconv -f iso-8859-1 -t UTF-8 $path/../gzip/"$file"."$i".000000.0000.dat -o $path/../transcoding/"$file"."$i".000000.0000.dat
		# iconv -f gb2312 -t UTF-8 $path/../gzip/"$file"."$i".000000.0000.dat -o $path/../transcoding/"$file"."$i".000000.0000.dat
		# 打印日志
		# esle
			# echo ""$file"."$i"文件轉(zhuǎn)碼失敗!" >> $log_path/$file"_"$date.log
			#exit 1
		#fi
		# mv $path/../transcoding/"$file"."$i".000000.0000.dat  $path/../data/"$file"."$i".000000.0000.dat
		# cp $path/"$file"."$i".000000.0000.flg  $path/../data/"$file"."$i".000000.0000.flg
		
	   }
	   echo "============================執(zhí)行時間:[ `date` ]============================" >> $log_path/$file"_"$date.log
		etl_extract
	   echo "" >> $log_path/$file"_"$date.log
	   echo "============================結(jié)束時間:[ `date` ]============================" >> $log_path/$file"_"$date.log
	   echo "" >> $log_path/$file"_"$date.log
	  done
	 fi
fi

到了這里,關(guān)于Shell腳本參數(shù)獲取的兩種方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Linux】Shell腳本中獲取命令運(yùn)行的結(jié)果

    【Linux】Shell腳本中獲取命令運(yùn)行的結(jié)果

    寫shell腳本的時候,常需要將一個命令的運(yùn)行結(jié)果做為參數(shù)傳遞給另外一個命令,除了我們熟知的管道 | 和args,我們也可以通過獲取命令的運(yùn)行結(jié)果。 執(zhí)行結(jié)果: 來點(diǎn)復(fù)雜的應(yīng)用: 再比如: ?? 運(yùn)行結(jié)果: 把反引號``換成$()即可 反引號不支持嵌套,而 $ 支持嵌套。 舉個例

    2024年02月11日
    瀏覽(34)
  • Shell腳本中獲取本機(jī)ip地址,Linux獲取本地ip地址

    在 Shell 腳本中獲取本機(jī) IP 地址可以通過多種方式實(shí)現(xiàn),這里介紹三種常用的方法: 1. 使用 ifconfig 命令獲取本機(jī) IP 地址 ifconfig 命令可以獲取本機(jī)網(wǎng)卡的配置信息,包括 IP 地址。可以通過 grep 命令過濾出 IP 地址信息,再使用 awk 命令提取出具體的 IP 地址。示例代碼如下:

    2024年02月11日
    瀏覽(31)
  • linux獲取內(nèi)存與cpu使用率(附有C語言源碼與shell腳本)

    linux獲取內(nèi)存與cpu使用率(附有C語言源碼與shell腳本)

    linux內(nèi)核提供了一種通過/proc文件系統(tǒng)來在運(yùn)行時訪問內(nèi)核內(nèi)部數(shù)據(jù)結(jié)構(gòu),改變內(nèi)核設(shè)置的機(jī)制,各種硬件平臺上的linux系統(tǒng)的/proc文件系統(tǒng)的基本概念都是相同的。 /proc文件系統(tǒng)是一種內(nèi)核和內(nèi)核模塊用來向進(jìn)程發(fā)送信息的機(jī)制。這個偽文件系統(tǒng)可以和內(nèi)核內(nèi)部的數(shù)據(jù)結(jié)構(gòu)進(jìn)

    2024年02月06日
    瀏覽(25)
  • 【Shell腳本4】Shell 傳遞參數(shù)

    【Shell腳本4】Shell 傳遞參數(shù)

    我們可以在執(zhí)行 Shell 腳本時,向腳本傳遞參數(shù),腳本內(nèi)獲取參數(shù)的格式為:$n。n 代表一個數(shù)字,1 為執(zhí)行腳本的第一個參數(shù),2 為執(zhí)行腳本的第二個參數(shù),以此類推…… 以下實(shí)例我們向腳本傳遞三個參數(shù),并分別輸出,其中 $0 為執(zhí)行的文件名(包含文件路徑): 為腳本設(shè)置

    2024年02月05日
    瀏覽(22)
  • 快速獲取cookie的兩種方式

    快速獲取cookie的兩種方式

    在需要獲取Cookie的谷歌瀏覽器界面,按Ctrl+Shift+j打開js控制臺。 輸入 console.log(document.cookie) 回車打印Cookies 新建書簽,書簽名稱隨意,書簽的網(wǎng)址是以下網(wǎng)址: 在需要獲取Cookie的頁面,點(diǎn)擊這個小書簽,就直接復(fù)制好了Cookie了。 以上兩種方式是自用實(shí)測比較方便高效的,在此

    2024年02月11日
    瀏覽(30)
  • 線程方法接收參數(shù)和返回參數(shù),Java的兩種線程實(shí)現(xiàn)方式對比

    總所周知,Java實(shí)現(xiàn)多線程有兩種方式,分別是繼承Thread類和實(shí)現(xiàn)Runable接口,那么它們的區(qū)別是什么? 繼承 Thread 類: 通過繼承 Thread 類,你可以創(chuàng)建一個直接表示線程的類。你可以覆蓋 Thread 類中的 run 方法來定義線程的邏輯。當(dāng)調(diào)用 start 方法啟動線程時,會執(zhí)行該類中的

    2024年02月11日
    瀏覽(29)
  • Java 獲取小程序碼的兩種方式

    目前小程序推出了自己的識別碼,小程序碼, 圓形的碼看起來比二維碼好看。 本文總結(jié)微信小程序的獲取小程序二維碼的接口開發(fā)。官方地址 主要內(nèi)容摘抄自微信小程序的API文檔,java接口開發(fā)是自己總結(jié)開發(fā)。 通過后臺接口可以獲取小程序任意頁面的二維碼,掃描該二維

    2024年02月14日
    瀏覽(24)
  • 線程方法接收參數(shù)示例,Java的兩種線程實(shí)現(xiàn)方式區(qū)別

    總所周知,Java實(shí)現(xiàn)多線程有兩種方式,分別是繼承Thread類和實(shí)現(xiàn)Runable接口,那么它們的區(qū)別是什么? 繼承 Thread 類: 通過繼承 Thread 類,你可以創(chuàng)建一個直接表示線程的類。你可以覆蓋 Thread 類中的 run 方法來定義線程的邏輯。當(dāng)調(diào)用 start 方法啟動線程時,會執(zhí)行該類中的

    2024年02月11日
    瀏覽(54)
  • shell腳本使用(宿主機(jī)windows-服務(wù)器-centos)--用于使用shell腳本方式控制docker容器

    shell腳本使用(宿主機(jī)windows-服務(wù)器-centos)--用于使用shell腳本方式控制docker容器

    需求: 我想要使得windows上編寫shell腳本,并且在這個shell腳本在linux中也可用 shell腳本在windows上無法直接運(yùn)行,但是有WSL這個linux子系統(tǒng)的工具 可以使得shell腳本在主機(jī)上執(zhí)行 視頻講解連接 方式1 方式2

    2024年02月07日
    瀏覽(61)
  • Shell腳本中獲取機(jī)器的日期和時間

    Shell腳本中獲取機(jī)器的日期和時間

    要在Shell腳本中獲取機(jī)器的日期和時間,可以使用內(nèi)置的date命令。以下是如何在Shell腳本中使用date命令來獲取機(jī)器的日期和時間的示例: 在這個示例中,我們使用了date命令和格式化字符串來獲取當(dāng)前日期和時間。%Y代表年份,%m代表月份,%d代表日期,%H代表小時,%M代表分鐘

    2024年02月11日
    瀏覽(15)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包