酷!學園

技術討論區 => Linux 討論版 => 主題作者是: jjchiou 於 2022-01-07 10:35

主題: shell script 變數使用問題
作者: jjchiou2022-01-07 10:35
你好;
我寫了一個shell script,要將文字檔每一行抓入重複輸出文另外script文件.
Shell scripts內容如下:

#!/bin/bash
u=(\/32)
#echo "The numbers in the file are:"
while IFS= read -r line
do
  echo "config firewall address
edit $line
set type ipmask
set subnet $line$u
next"
done < file.txt >ip.txt

file為每行一個ip位址:如 95.216.145.1
我需要輸出為底下格式:

config firewall address
edit 95.216.145.1
set type ipmask
set subnet 95.216.145.1/32
next

但實際輸出格式為:
config firewall address
edit 95.216.145.1
set type ipmask
/32 subnet 95.216.145.1
next
請問要如何改這shell script
主題: Re: shell script 變數使用問題
作者: darkranger2022-01-10 13:59
確定是用 Bash 執行 script 的嗎?
或者,u 那邊換寫法試試看,比如說 u="/32"
主題: Re: shell script 變數使用問題
作者: jjchiou2022-01-12 17:27
改成 u="/32"一樣是錯誤格式
主題: Re: shell script 變數使用問題
作者: darkranger2022-01-13 10:10
系統環境可能得陳述一下了,畢竟我沒有重現出跟你一樣的問題?
主題: Re: shell script 變數使用問題
作者: twu22022-01-14 09:27
file.txt 為 dos 格式 (CRLF).
請改成 unix 格式 (LF).

讀進來的 $line 最後有 CR, 會跳到那一行的最前面, 所以 /32 會跑到前面蓋掉 set.
主題: Re: shell script 變數使用問題
作者: jjchiou2022-01-21 16:02
謝謝各位回復,的確是格式的問題,加上一行變換格式就好了