iT邦幫忙

0

bash 把列出的值 當連續變數

  • 分享至 

  • xImage

不好意思
請教一下前輩們
因剛接觸Linux
目前我在bash上遇到的問題
我寫了一個test.sh
我想要把列出的數值(目前只會做到這),當成連續的變數
然後使用指令在hosts文件對應的變數(行數)插入#(註解掉那一行)
使用nl 列出/etc/hosts文件裡對應grep 數值的項目
並awk取得行數與使用sort照順序大小重新排列

#!/bin/bash
nl /etc/hosts | grep -E \
        "192.168.0.100|\
        192.168.0.101|\
        192.168.10.123|\
        192.168.10.234"\
        | awk {'print $1'} \
        | sort -r

./test.sh 得到的行數數值 例如為
200
201
202
300

不知道該怎麼把以上列出的數值變成連續變數 $var1..$var4
然後用指令把hosts文件中 第$var1 $var2 $var3 $var4 行的第一個字元插入#
如果前輩有更好的寫法
再請各位前輩不吝教導了

obarisk iT邦研究生 1 級 ‧ 2022-10-16 22:09:42 檢舉
要取代要用 sed 吧
不然用你現在的方法大概要用 array

請把原來要做的事情說清楚
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
wiseguy
iT邦超人 1 級 ‧ 2022-10-16 22:47:43

你要的效果,只是要註解掉 /etc/hosts 檔案中,某些特定 IP 吧?怎麼會搞得這麼麻煩?
只要一個 sed 指令就行了(以下指令就一行,不需要換行)

sed -i '/^\(192.168.0.100\|192.168.0.101\|192.168.10.123\|192.168.10.234\)/s//#\1/' /etc/hosts

我要發表回答

立即登入回答