當前位置:首頁 » 編程軟體 » linuxshell腳本字元串

linuxshell腳本字元串

發布時間: 2022-10-29 12:07:45

linux shell腳本 隨機調用預設的字元串

#調用shell內嵌函數$RANDOM,生成1-6的隨機數。
num=`echo$(($RANDOM%6+1))`

#根據隨機數調用字元串。
echo'aaabbbcccdddeeefff'|awk-vn=$num'{print$n}'

❷ linux shell 腳本中怎樣將字元串轉化為命令

字元串加上反引號``就能執行字元串中的命令了,示例:

#!/bin/bash
cmd="ls-l"
result=`$cmd`
echo$result

❸ linux shell中幾種特殊變數和字元串的截取

簡單介紹下Shell字元串截取的詳細方法,如截取指定字數、按指定的字元串截取、按指定要求分割。

一、Linux shell 截取字元變數的前8位,有方法如下:

❹ linux shell 腳本 字元串替換問題

shell腳本中,單引號內的$是不被解釋的
perl支持雙引號嗎?改成雙引號試試

❺ 關於linux中shell腳本如何判斷文件名稱中是否含有某字元串

if [ -e filename ];
我覺得是你括弧錯了…此外這種括弧不能用通配符…試試[[]]?不行可以用for代替if

❻ linux shell 腳本中怎樣將字元串轉化為命令

1.沒必要這樣。因為shell腳本執行的時候是在一個子shell中執行的,即使你成功的將字元串轉化為命令,你也不會因為腳本執行「cd /home」而在本shell中切換到/home下。……額,是不是說的繞了。。。
2.倘若按照你的想法,那就是一個新shell了。話句話說,你覺得像bash、sh、csh等等這些shell難道僅僅是一個腳本嗎?再換句話說,難道bash僅僅是在sh的一個腳本嗎?……

=====

3.假如真的需要在使用腳本的時候讓使用者自己輸入需要腳本執行的命令,只能用選擇語句或者判斷語句來匹配使用者的輸入。因為使用者在使用腳本時輸入給腳本的「命令」從根本上講並不是命令,對腳本而言它僅僅是一個執行過程中的「選項」。好比「(1)刪除(2)增加(3)退出... 請輸入選項:」這種最平常的方式,拓展開也就是把提示去掉變成「請輸入命令:」,而在使用者輸入之後腳本用 if 刪除==輸入字元串 then 。。。這樣的方式來滿足需求。
======
沒了。

❼ Linux Shell 腳本編程最佳實踐

IT路邊社

前言

與其它的編碼規范一樣,這里所討論的不僅僅是編碼格式美不美觀的問題, 同時也討論一些約定及編碼標准。這份文檔主要側重於我們所普遍遵循的規則,對於那些不是明確強制要求的,我們盡量避免提供意見。

編碼規范對於程序員而言尤為重要,有以下幾個原因:

本文檔中的准則致力於最大限度達到以下原則:

盡管本文檔涵蓋了許多基礎知識,但應注意的是,沒有編碼規范可以為我們回答所有問題,開發人員始終需要再編寫完代碼後,對上述原則做出正確的判斷。

:未明確指明的則默認為必須(Mandatory)

主要參考如下文檔:

僅建議Shell用作相對簡單的實用工具或者包裝腳本。因此單個shell腳本內容不宜太過復雜。

在選擇何時使用shell腳本時時應遵循以下原則:

可執行文件不建議有擴展名,庫文件必須使用 .sh 作為擴展名,且應是不可執行的。

執行一個程序時,無需知道其編寫語言,且shell腳本並不要求具有擴展名,所以更傾向可執行文件沒有擴展名。

而庫文件知道其編寫語言十分重要,使用 .sh 作為特定語言後綴的擴展名,可以和其他語言編寫的庫文件加以區分。

文件名要求全部小寫, 可以包含下劃線 _ 或連字元 - , 建議可執行文件使用連字元,庫文件使用下劃線。

正例:

反例:

源文件編碼格式為UTF-8。避免不同操作系統對文件換行處理的方式不同,一律使用 LF 。

每行最多不超過120個字元。每行代碼最大長度限制的根本原因是過長的行會導致閱讀障礙,使得縮進失效。

除了以下兩種情況例外:

如出現長度必須超過120個字元的字元串,應盡量使用here document或者嵌入的換行符等合適的方法使其變短。

示例:

除了在行結束使用換行符,空格是源文件中唯一允許出現的空白字元。

對從來沒有用到的或者被注釋的方法、變數等要堅決從代碼中清理出去,避免過多垃圾造成干擾。

Bash 是唯一被允許使用的可執行腳本shell。

可執行文件必須以 #!/bin/bash 開始。請使用 set 來設置shell的選項,使得用 bash echo "Process $: Done making $$$."
# 示例7:命令參數及路徑不需要引號 grep -li Hugo /dev/ "$1"
# 示例8:常規變數用雙引號,ccs可能為空的特殊情況可不用引號 git send-email --to "${reviewers}" ${ccs:+"--cc" "${ccs}"}
# 示例9:正則用單引號,$1可能為空的特殊情況可不用引號 grep -cP '([Ss]pecial||?characters*) ${1:+"$1"}
# 示例10:位置參數傳遞推薦帶引號的"$@",所有參數作為單字元串傳遞用帶引號的"$*" # content of t.sh func_t { echo num: $# echo args: 1:$1 2:$2 3:$3 }
func_t "$@" func_t "$*" # 當執行 ./t.sh a b c 時輸出如下: num: 3 args: 1:a 2:b 3:c num: 1 args: 1:a b c 2: 3:

使用 $(command) 而不是反引號。

因反引號如果要嵌套則要求用反斜杠轉義內部的反引號。而 $(command) 形式的嵌套無需轉義,且可讀性更高。

正例:

反例:

條件測試

使用 [[ ... ]] ,而不是 [ , test , 和 /usr/bin/[ 。

因為在 [[ 和 ]] 之間不會出現路徑擴展或單詞切分,所以使用 [[ ... ]] 能夠減少犯錯。且 [[ ... ]] 支持正則表達式匹配,而 [ ... ] 不支持。參考以下示例:

盡可能使用變數引用,而非字元串過濾。

Bash可以很好的處理空字元串測試,請使用空/非空字元串測試方法,而不是過濾字元,讓代碼具有更高的可讀性。正例:

反例:

正例:

反例:

正例:

反例:

文件名擴展

當進行文件名的通配符擴展時,請指定明確的路徑。

當目錄中有特殊文件名如以 - 開頭的文件時,使用帶路徑的擴展通配符 ./* 比不帶路徑的 * 要安全很多。

應該避免使用eval。

Eval在用於分配變數時會修改輸入內容,但設置變數的同時並不能檢查這些變數是什麼。反例:

請使用進程替換或者for循環,而不是通過管道連接while循環。

這是因為在管道之後的while循環中,命令是在一個子shell中運行的,因此對變數的修改是不能傳遞給父shell的。

這種管道連接while循環中的隱式子shell使得bug定位非常困難。反例:

如果你確定輸入中不包含空格或者其他特殊符號(通常不是來自用戶輸入),則可以用for循環代替。例如:

使用進程替換可實現重定向輸出,但是請將命令放入顯式子 shell,而非 while 循環創建的隱式子 shell。例如:

總是檢查返回值,且提供有用的返回值。

對於非管道命令,使用 $? 或直接通過 if 語句來檢查以保持其簡潔。

例如:

當內建命令可以完成相同的任務時,在shell內建命令和調用外部命令之間,應盡量選擇內建命令。

因內建命令相比外部命令而言會產生更少的依賴,且多數情況調用內建命令比調用外部命令可以獲得更好的性能(通常外部命令會產生額外的進程開銷)。

正例:

反例:

載入外部庫文件不建議用使用.,建議使用source,已提升可閱讀性。正例:

反例:

除非必要情況,盡量使用單個命令及其參數組合來完成一項任務,而非多個命令加上管道的不必要組合。常見的不建議的用法例如:cat和grep連用過濾字元串; cat和wc連用統計行數; grep和wc連用統計行數等。

正例:

除特殊情況外,幾乎所有函數都不應該使用exit直接退出腳本,而應該使用return進行返回,以便後續邏輯中可以對錯誤進行處理。正例:

反例:

推薦以下工具幫助我們進行代碼的規范:

原文鏈接:http://itxx00.github.io/blog/2020/01/03/shell-standards/

獲取更多的面試題、腳本等運維資料點擊: 運維知識社區 獲取

腳本之---簡訊轟炸機

腳本之---QQ微信轟炸機

ansible---一鍵搭建redis5.0.5集群

elk7.9真集群docker部署文檔

全球最全loki部署及配置文檔

最強安全加固腳本2.0

一鍵設置iptbales腳本

❽ Linux shell 中如何從路徑名提取指定字元串


-
為分隔符,用cut命令取第二個欄位就行了啊(只要路徑名里不含
-
即可)
echo
"/home/lxy/hhhhh-a.bbb.cc.d"
|
cut
-d'-'
-f2
更保險一點的做法是先取出文件名(防止路徑名里含
-
),然後再用上述方法處理:
echo
"/home/lxy/hhhhh-a.bbb.cc.d"
|
awk
-F/
'{print
$NF}'
|
cut
-d'-'
-f2

❾ linux shell命令怎麼查找文件中指定字元串,並把這個字元串所在行和下面一行的內容寫到另外一個文件中

有兩種寫入方式:

1、grep -i "aaa" -A 1 1.txt | grep -v -e "--" >2.txt

grep指令用於查找內容包含指定的範本樣式的文件,如果發現某文件的內容符合所指定的範本樣式,預設grep指令會把含有範本樣式的那一列顯示出來。若不指定任何文件名稱,或是所給予的文件名為「-」,則grep指令會從標准輸入設備讀取數據。

2、awk '/aaa/{getline var;print $1" " var}' 1.txt >2.txt

awk語言的最基本功能是在文件或者字元串中基於指定規則瀏覽和抽取信息,awk抽取信息後,才能進行其他文本操作。完整的awk腳本通常用來格式化文本文件中的信息。

❿ 每天三分鍾搞定linux shell腳本10 字元串相關的if判斷


字元串比較包括

注意 :這里的符號要 轉義 ,否則變成了重定向了。

運行結果:

注意 :上面的 等號左右兩側 中括弧內側 一定要有空格

運行結果:

以上的例子,說明 小寫字母排在字典的後面 (類似於ascii的大小)。


sort 可以對字元串排序,sort 命令會把小寫字母放在前面


運行結果:

注意上面的 中括弧內側 一定要有空格。

注意 :有時候想在字元串比較的時候使用 正則表達式 ,可以使用 雙方括弧 ,如:

運行如下:

注意:上面的 雙等號左右兩側,中括弧內側 一定要有空格

熱點內容
網路存儲伺服器如何搭建 發布:2025-07-18 04:47:23 瀏覽:549
手機上玩電腦我的世界伺服器 發布:2025-07-18 04:11:59 瀏覽:599
騰訊和安卓哪個渠道好 發布:2025-07-18 04:07:49 瀏覽:829
ftp不支持中文 發布:2025-07-18 03:46:19 瀏覽:245
伺服器太水了什麼原因 發布:2025-07-18 03:44:31 瀏覽:955
安卓怎麼去除紅色塗鴉 發布:2025-07-18 03:39:30 瀏覽:608
sql三表關聯 發布:2025-07-18 03:31:40 瀏覽:267
攬勝英國賽車綠是哪個配置的 發布:2025-07-18 03:18:11 瀏覽:392
linux如何安裝python 發布:2025-07-18 03:17:37 瀏覽:952
php博客系統 發布:2025-07-18 03:01:30 瀏覽:641