iT邦幫忙

1

關於SHELL的幾個問題想請大家幫忙解答

  • 分享至 

  • xImage

1.請問我這段程式碼
read -p "input postin : " i
echo $i
read -p "please ip : " ip
echo $ip
read -p "please persime: " ps
echo $ps

if [ -d ${i} ] ; < 這段在單獨的時候他可以預作後面的內容,可是只要放回程式裡面
他都直接只跑 if [ -d ${i} ] 請問這是什麼原因呢
then
echo "$?"
fi

test ! -d ${i} && echo "not" < 同前面的

if [[ ! "${ip}" =~ [0-9] ]]
then
echo "this is only dig

fi

問題點:

if [ -d ${i} ] 我想讓他 符合這個 條件 他會執行後面的
echo "$?" 可是我單獨拿出來測試正常
只要放回去程式碼裡面 後面 echo "$?" 這個就條件服合也不會顯示

2.[[ "${x}" =~ ^[0-9]+$ ]]
這段的[[]] 代表什麼意思呢? 還有=~ 又有什麼用處呢 以及後面的+$ 跟[0-9]
有什麼差別呢
這邊已經有查過資料可試看了還是不太懂
不知道有沒有大大可以更好的解說

froce iT邦大師 1 級 ‧ 2019-09-04 14:09:31 檢舉
shell我不熟,我都直接寫python...
不過2我看的懂。

^[0-9]+$ => 正規表達式,你要檢查 ${x} 開頭到結尾都是數字,且1個字元以上。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
dragonH
iT邦超人 5 級 ‧ 2019-09-04 14:13:01
最佳解答

1 .

待補

還是看不懂的你的問題 /images/emoticon/emoticon06.gif

你要的效果是什麼?

最後出來的結果或遇到的問題是什麼?

因為我測試看起來都正常

2 .

正規

[[ "${x}" =~ ^[0-9]+$ ]]
=~ => 右邊為正規式

^[0-9]  =>  0 ~ 9 開頭

+  =>  一個以上的字元

$  =>  結尾

組合起來就是

${x} 要符合 數字開頭 + 一個以上的數字 + 數字結尾 = 整串都是數字
看更多先前的回應...收起先前的回應...
zebrakky iT邦新手 4 級 ‧ 2019-09-04 14:36:58 檢舉

if [ -d ${i} ] 我想讓他 符合這個 條件 他會執行後面的
echo "$?" 可是我單獨拿出來測試正常
只要放回去程式碼裡面 後面 echo "$?" 這個就條件服合也不會顯示

dragonH iT邦超人 5 級 ‧ 2019-09-04 14:48:31 檢舉

zebrakky

img

我測試是正常呀

符合

if [ -d ${i} ]

才執行接下來的動作

zebrakky iT邦新手 4 級 ‧ 2019-09-04 16:01:40 檢舉

我在VMBOX裡面 測試不行的 他條件對 他也不會反應

zebrakky iT邦新手 4 級 ‧ 2019-09-04 16:06:22 檢舉

這邊我是條成 如果是資料夾 條件符合 他應該要顯示我想要的文字
input postin : /etc

  • echo /etc
    /etc
    可這邊再用SH -X 跑的時候 條件對 也無法得到想要的文字

  • read -p 'please ip : ' ip
    please ip : 192.168.1.11

  • echo 192.168.1.11
    192.168.1.11_

  • read -p 'please persime: ' ps
    please persime: ro

  • echo ro
    ro

  • '[' -d /etc ']'

  • echo 1
    1

  • [[ ! 192.168.1.11 =~ [0-9] ]]

  • echo ' 192.168.1.11(ro) '

  • echo ''

  • echo '\n 192.168.1.11'
    \n 192.168.1.11

  • echo '\n ro'
    \n ro

zebrakky iT邦新手 4 級 ‧ 2019-09-04 16:21:16 檢舉

我看了影片 我是想讓他調建達成 顯示NOT 只是顯示不出來
還有第二題[[ ]] 這個 跟 [] 有什麼差別呢
像我在使用=~ 用[ ]他反而會錯誤 然後用 [[ ]] =~ 卻又可以成功這插在哪裡呢

zebrakky iT邦新手 4 級 ‧ 2019-09-04 16:21:16 檢舉

我看了影片 我是想讓他調建達成 顯示NOT 只是顯示不出來
還有第二題[[ ]] 這個 跟 [] 有什麼差別呢
像我在使用=~ 用[ ]他反而會錯誤 然後用 [[ ]] =~ 卻又可以成功這插在哪裡呢

dragonH iT邦超人 5 級 ‧ 2019-09-04 16:36:28 檢舉

[] vs [[]]

你可以參考這個

我要發表回答

立即登入回答