技術討論區 > Linux 討論版

shell script 變數使用問題

(1/2) > >>

jjchiou:
你好;
我寫了一個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

darkranger:
確定是用 Bash 執行 script 的嗎?
或者,u 那邊換寫法試試看,比如說 u="/32"

jjchiou:
改成 u="/32"一樣是錯誤格式

darkranger:
系統環境可能得陳述一下了,畢竟我沒有重現出跟你一樣的問題?

twu2:
file.txt 為 dos 格式 (CRLF).
請改成 unix 格式 (LF).

讀進來的 $line 最後有 CR, 會跳到那一行的最前面, 所以 /32 會跑到前面蓋掉 set.

導覽

[0] 文章列表

[#] 下頁

前往完整版本