iT邦幫忙

1

linux 字串問題

  • 分享至 

  • xImage

大大好 小弟印象中Bash default Type is String,兩個都是https://192.168.49.2:8443
但一個長度34一個長度25,有大大知道這是為什麼嗎?

https://ithelp.ithome.com.tw/upload/images/20230220/20141775Wt6e5veGzT.png

DanSnow iT邦好手 1 級 ‧ 2023-02-20 14:22:37 檢舉
因為你第二個 echo 在取用 K8S_SERVER 時沒加 $ 字號?
kk999 iT邦新手 3 級 ‧ 2023-02-20 16:00:20 檢舉
已修正,但還是不一樣好神奇
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

2
jeffeux
iT邦新手 4 級 ‧ 2023-02-21 11:43:14

因為讓字串有顏色也是需要字符的啊~
沒猜錯應該是

control_node=$'\033'$'['0$';'33m''https://192.168.49.2:8443''$'\033'$'['0m
K8S_SERVER='https://192.168.49.2:8443'

echo $control_node
echo $K8S_SERVER

算字符數:

echo $control_node | wc -c  # 37
echo $K8S_SERVER | wc -c  # 26

你可以把黃色那個這樣測試

echo $control_node | cat -e  # ^[[0;33mhttps://192.168.49.2:8443^[[0m$
echo $K8S_SERVER | cat -e  # https://192.168.49.2:8443$

或者用 Python 看

echo $control_node | python -c 'print(repr(input()))'
# '\x1b[0;33mhttps://192.168.49.2:8443\x1b[0m'
echo $K8S_SERVER | python -c 'print(repr(input()))'
# 'https://192.168.49.2:8443'
#!/usr/bin/env python
# 注意這邊是 Python code!
control_node = '\x1b[0;33mhttps://192.168.49.2:8443\x1b[0m'
K8S_SERVER = 'https://192.168.49.2:8443'
print(control_node)
print(K8S_SERVER)

print(len(control_node))  # 36  # 因為差一個 echo 加的 '\n'
print(len(K8S_SERVER))  # 25
kk999 iT邦新手 3 級 ‧ 2023-03-02 11:59:06 檢舉

感謝大大如此詳盡的解說還附程式碼!

我要發表回答

立即登入回答