shell腳本字元串拼接
❶ shell腳本主要有哪些
第一個shell腳本程序:
#!/bin/bash
# 上面中的 #! 是一種約定標記, 它可以告訴系統這個腳本需要什麼樣的解釋器來執行;echo "Hello, world!"
變數:
定義變數:
country="China"Number=100
注意: 1,變數名和等號之間不能有空格;
2,首個字元必須為字母(a-z,A-Z)。
3, 中間不能有空格,可以使用下劃線(_)。
4, 不能使用標點符號。
5, 不能使用bash里的關鍵字(可用help命令查看保留關鍵字)。
使用變數:
只需要在一個定義過的變數前面加上美元符號$就可以了, 另外,對於變數的{} 是可以選擇的, 它的目的為幫助解釋器識別變數的邊界.
country="China"echo $countryecho ${country}echo "I love my ${country}abcd!"
#這個需要有{}的;
重定義變數:直接把變數重新像開始定義的那樣子賦值就可以了:
country="China"country="ribenguizi"
只讀變數: 用 readonly 命令 可以把變數字義為只讀變數。
readonly country="China"#或
country="China"readonly country
刪除變數: 使用unset命令可以刪除變數,但是不能刪除只讀的變數。用法:
unset variable_name
變數類型
運行shell時,會同時存在三種變數:
1) 局部變數
局部變數在腳本或命令中定義,僅在當前shell實例中有效,其他shell啟動的程序不能訪問局部變數。
2) 環境變數
所有的程序,包括shell啟動的程序,都能訪問環境變數,有些程序需要環境變數來保證其正常運行。必要的時候shell腳本也可以定義環境變數。
3) shell變數
shell變數是由shell程序設置的特殊變數。shell變數中有一部分是環境變數,有一部分是局部變數,這些變數保證了shell的正常運行
特殊變數:
其中, 1. 取值後面必須為關鍵字 in,每一模式必須以右括弧結束。取值可以為變數或常數。匹配發現取值符合某一模式後,其間所有命令開始執行直至 ;;。;; 與其他語言中的 break 類似,意思是跳到整個 case 語句的最後。2. 如果無一匹配模式,使用星號 * 捕獲該值,再執行後面的命令。
❷ hell 如何在bash腳本中連接兩個字元串變數
bash在一個腳本里引用另一個腳本定義的變數有3種方法:
fork(/directory/script.sh)
fork是最普通的,就是直接在腳本裡面用/directory/script.sh來調用script.sh這個腳本.
運行的時候開一個sub-shell執行調用的腳本,sub-shell執行的時候,parent-shell還在。
sub-shell執行完畢後返回parent-shell.sub-shell從parent-shell繼承環境變數.但是sub-shell中的環境變數不會帶回parent-shell
exec(exec/directory/script.sh)
exec與fork不同,不需要新開一個sub-shell來執行被調用的腳本.被調用的腳本與父腳本在同一個shell內執行。但是使用exec調用一個新腳本以後,父腳本中exec行之後的內容就不會再執行了。這是exec和source的區別
source(source/directory/script.sh)
與fork的區別是不新開一個sub-shell來執行被調用的腳本,而是在同一個shell中執行.所以被調用的腳本中聲明的變數和環境變數,都可以在主腳本中得到和使用.
可以通過下面這兩個腳本來體會三種調用方式的不同:
1.sh
#!/bin/bash
A=B
echo"PIDfor1.shbeforeexec/source/fork:$$"
exportA
echo"1.sh:$Ais$A"
case$1in
exec)
echo"usingexec…"
exec./2.sh;;
source)
echo"usingsource…"
../2.sh;;
*)
echo"usingforkbydefault…"
./2.sh;;
esac
echo"PIDfor1.shafterexec/source/fork:$$"
echo"1.sh:$Ais$A"
2.sh
#!/bin/bash
echo"PIDfor2.sh:$$"
echo"2.shget$A=$Afrom1.sh"
A=C
exportA
echo"2.sh:$Ais$A"
執行情況:
$./1.sh
PIDfor1.shbeforeexec/source/fork:5845364
1.sh:$AisB
usingforkbydefault…
PIDfor2.sh:5242940
2.shget$A=Bfrom1.sh
2.sh:$AisC
PIDfor1.shafterexec/source/fork:5845364
1.sh:$AisB
$./1.shexec
PIDfor1.shbeforeexec/source/fork:5562668
1.sh:$AisB
usingexec…
PIDfor2.sh:5562668
2.shget$A=Bfrom1.sh
2.sh:$AisC
$./1.shsource
PIDfor1.shbeforeexec/source/fork:5156894
1.sh:$AisB
usingsource…
PIDfor2.sh:5156894
2.shget$A=Bfrom1.sh
2.sh:$AisC
PIDfor1.shafterexec/source/fork:5156894
1.sh:$AisC
$
❸ shell 如何 拼接字元串
#!/bin/sh
str1="111"
str2="222"
str3=$str1$str2
echo $str3
❹ shell字元串拼接
字元串最好放到雙引號中,防止中間有空格,如name中就可能存在空格。
改為:
total="${name}""${email}""${other}"
或者 total="$name""$email""$other"
❺ ubuntu shell腳本文件連接字元串問題
((retnum=$RANDOM%max+min))
(( ))這種會新建shell運行,結果只在新建shell中有效,執行完畢回到原shell中,變數retnum的值是帶不過來的,直接丟失。
改為:
retnum=$((RANDOM%max+min))
這樣,返回值能保留在當前shell中。
$(( ))是bash中用於數學運算的特有符號。
❻ 我想知道SHELL命令下字元串拼接
=號兩邊不能有空格
執行命令需要用反引號括起來 `grep -c "" 3s.txt`
❼ 如何在shell中執行 字元串拼接起來的命令 c
[root@localhost ~]# a=123
You have new mail in /var/spool/mail/root
[root@localhost ~]# b=456
[root@localhost ~]# echo $a$b
123456
[root@localhost ~]# c=$a$b
[root@localhost ~]# echo $c
123456
❽ shell腳本中怎樣對逗號拼接的一系列字元串進行去重
方法有很多,我說兩個思路,拋磚引玉:
1、將你的字元串轉換成數組,然後循環兩兩比對,用unset去掉重復的,然後將這個數組重新轉換成字元串並去除空值。
2、將逗號轉換成換行,然後用uniq去重,然後轉換回來。
可能還有更加簡單的方法,需要自己研究下了
❾ shell拼接字元串
《linux就該這么學》不錯的linux自學書籍
❿ linux中用shell時奇怪的字元串拼接和時間計算問題
testt=$(date +%Y-%m-%d)
date2="14/08/12"
test=20
testtt="${test}${date2}"
time1=$(date +%s -d "$testt" )
time2=$(date +%s -d "$testtt" )
time=$(($time1-$time2))
echo $time
改成引號,去掉括弧!!