日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

shell中变量的取值与赋值

發布時間:2025/5/22 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 shell中变量的取值与赋值 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

取值是很簡單的,例如var=bbb,那么${var}ccc的結果就是bbbccc,在包含字符串的時候要用到三種引號,分別是單引號、雙引號和反引號,現來一一討論

一、整體引用

  • mv?"a?~file?name.txt"?another.txt?
  • 在這種情況下,單雙引號是沒有什么區別,它們的意義相同。

    二、變量替換

  • echo?"The?value?of?'${var}'?is?${var}".?
  • 在這種情況下,當一個變量被用在雙引號括起來的句子里面的時候,它會被替換成它的內容;而當使用單引號的時候,變量替換則不會發生。所以可以說單引號是更強的引用。像上面那個例子的輸出結果為:

  • The?value?of?'${var}'?is?bbb.?
  • 三、命令替換

  • var='uname?-r'?
  • 這樣,變量$var的值就是命令uname -r的輸出。

    比變量替換更高級的是匹配,例如:${f%jpg}是用jpg對變量f從后面開始進行匹配,并把匹配上的部分(也就是擴展名)去掉,同時使用兩個百分號的時候,表示使用了最大匹配方式,比如"abcdabcd",在用a*d匹配的時候,如果是最大匹配,就會匹配所有8個字符,而用最小匹配的時候則會匹配4個。與百分號相對應,也可以使用"#"來對變量進行從前向后的匹配,同樣也可以用兩個來表示最大匹配。

    來看個例子

  • #!/bin/bash ?
  • for?var?in?*.sh ?
  • do ?
  • echo?"${var%sh}" ?
  • done ?
  • 結果如下

  • test1. ?
  • test2. ?
  • test3. ?
  • test. ?
  • 看到了后綴都沒有了,可以用以修改后綴名

  • #!/bin/bash ?
  • for?var?in?*.sh ?
  • do ?
  • mv?"${var}" "${var%sh}SH" ?
  • done ?
  • 這樣小寫的sh就變成大寫的了。

    寫個簡單的循環替換

  • grep?-v?"^#"?/etc/passwd?|\ ?
  • while?read?i ?
  • do ?
  • echo?${i%%:*} ?
  • done?
  • 第一行:-v是取反的意思,"^#"是取開頭非#的行,最后的"\",如果將以上代碼直接寫成一個文件那么最后那個反斜杠可以不要,但是在shell窗口中一行一行的寫那么反斜杠是必須加上的,它會告訴編譯器還沒有結束。

    第四行:%%:*意思是從最后到":"進行最大匹配,這樣就只剩下第一個":"號以前的內容了,看看結果

    替換前

  • sucre@sucre-ubuntu:~$?cat?/etc/passwd ?
  • root:x:0:0:root:/root:/bin/bash ?
  • daemon:x:1:1:daemon:/usr/sbin:/bin/sh ?
  • bin:x:2:2:bin:/bin:/bin/sh ?
  • sys:x:3:3:sys:/dev:/bin/sh ?
  • sync:x:4:65534:sync:/bin:/bin/sync ?
  • games:x:5:60:games:/usr/games:/bin/sh ?
  • man:x:6:12:man:/var/cache/man:/bin/sh ?
  • lp:x:7:7:lp:/var/spool/lpd:/bin/sh ?
  • mail:x:8:8:mail:/var/mail:/bin/sh ?
  • news:x:9:9:news:/var/spool/news:/bin/sh ?
  • uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh ?
  • proxy:x:13:13:proxy:/bin:/bin/sh ?
  • www-data:x:33:33:www-data:/var/www:/bin/sh ?
  • backup:x:34:34:backup:/var/backups:/bin/sh ?
  • list:x:38:38:Mailing?List?Manager:/var/list:/bin/sh ?
  • irc:x:39:39:ircd:/var/run/ircd:/bin/sh ?
  • gnats:x:41:41:Gnats?Bug-Reporting?System?(admin):/var/lib/gnats:/bin/sh ?
  • nobody:x:65534:65534:nobody:/nonexistent:/bin/sh ?
  • libuuid:x:100:101::/var/lib/libuuid:/bin/sh ?
  • syslog:x:101:103::/home/syslog:/bin/false ?
  • messagebus:x:102:107::/var/run/dbus:/bin/false ?
  • avahi-autoipd:x:103:110:Avahi?autoip?daemon,,,:/var/lib/avahi-autoipd:/bin/false ?
  • avahi:x:104:111:Avahi?mDNS?daemon,,,:/var/run/avahi-daemon:/bin/false ?
  • couchdb:x:105:113:CouchDB?Administrator,,,:/var/lib/couchdb:/bin/bash ?
  • speech-dispatcher:x:106:29:Speech?Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh ?
  • usbmux:x:107:46:usbmux?daemon,,,:/home/usbmux:/bin/false ?
  • haldaemon:x:108:114:Hardware?abstraction?layer,,,:/var/run/hald:/bin/false ?
  • kernoops:x:109:65534:Kernel?Oops?Tracking?Daemon,,,:/:/bin/false ?
  • pulse:x:110:115:PulseAudio?daemon,,,:/var/run/pulse:/bin/false ?
  • rtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false ?
  • saned:x:112:118::/home/saned:/bin/false ?
  • hplip:x:113:7:HPLIP?system?user,,,:/var/run/hplip:/bin/false ?
  • gdm:x:114:120:Gnome?Display?Manager:/var/lib/gdm:/bin/false ?
  • sucre:x:1000:1000:sucre,,,:/home/sucre:/bin/bash ?
  • sshd:x:115:65534::/var/run/sshd:/usr/sbin/nologin ?
  • 替換后

  • one ?
  • root ?
  • daemon ?
  • bin ?
  • sys ?
  • sync ?
  • games ?
  • man ?
  • lp ?
  • mail ?
  • news ?
  • uucp ?
  • proxy ?
  • www-data ?
  • backup ?
  • list ?
  • irc ?
  • gnats ?
  • nobody ?
  • libuuid ?
  • syslog ?
  • messagebus ?
  • avahi-autoipd ?
  • avahi ?
  • couchdb ?
  • speech-dispatcher ?
  • usbmux ?
  • haldaemon ?
  • kernoops ?
  • pulse ?
  • rtkit ?
  • saned ?
  • hplip ?
  • gdm ?
  • sucre ?
  • sshd ?
  • 看到了吧,效率還行吧。


    本文轉自sucre03 51CTO博客,原文鏈接:http://blog.51cto.com/sucre/386442,如需轉載請自行聯系原作者

    總結

    以上是生活随笔為你收集整理的shell中变量的取值与赋值的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。