# 讀取ini文件
函數如下
```bash
#!/usr/bin/env bash
#-------------------------------------------------------
# FileName : Bash讀取ini文件.sh
# Author :hpy
# Date :2020年11月08日
# Description :讀取ini文件的函數
#-------------------------------------------------------
#-----------------------------------------
#函數名:ReadIni
#功能:讀取ini文件,讀取成功返回狀態碼0,否則
#返回狀態碼1
#@param1:ini文件路徑
#@param2:Section
#@param3:Option
#例如:ReadIni test.ini s2 Path
#-----------------------------------------
function ReadIni(){
fid=$1
section=$2
option=$3
test ! -f $fid && echo "不存在文件$fid" && return 2
if [ $# -eq 3 ] ; then
local src=$(cat $fid | awk '/\['$section'\]/{f=1;next} /\[*\]/{f=0} f' | #找出section下的所有內容
grep $option | # 匹配option的行
grep '=' | # 看看是不是存在=
cut -d'=' -f2| # 獲取對應的值
cut -d'#' -f1| # 去除注釋
cut -d';' -f1| #去除注釋
awk '{gsub(/^\s+|\s+$/, "");print}') #去掉最前面的空格
echo $src
test ${#src} -eq 0 && return 2 || return 0 #讀取到有效數據 返回狀態碼0
else
return 2
fi
}
ReadIni test.ini s3 Path
test $? -eq 0 && echo "成功讀取到數據" || echo "讀取失敗"
```
# 增加或者改寫ini文件
```bash
#!/usr/bin/env bash
#-------------------------------------------------------
# FileName : WriteIni.sh
# Author :hpy
# Date :2020年11月08日
# Description :寫ini文件的函數
#-------------------------------------------------------
#-----------------------------------------
#函數名:WriteIni
#功能:增加,改寫ini文件,若不存在指定元素
#自動添加,存在則更改,操作成功返回狀態碼0,
#否則返回狀態碼2
#@param1:ini文件路徑
#@param2:Section
#@param3:Option
#@param4:value
#例如:WriteIni test.ini s2 Path value
#-----------------------------------------
function WriteIni(){
fid=$1
section=$2
option=$3
value=$4
if [ ${fid#*.} != ini ] ; then
echo "不是ini文件"
return 2
fi
test ! -f $fid && echo "不存在文件$fid" && return 2
if [ $# -eq 4 ] ; then
local src=$(cat $fid | awk '/\['$section'\]/{f=1;next} /\[*\]/{f=0} f') #先搜尋是否存在option
if [ ${#src} -eq 0 ] ;then #沒有匹配到section,直接新建并添加內容
echo "[$section]" >> $fid
echo " $option = $value" >> $fid
return 0
else
local src=$(cat -n $fid | awk '/\['$section'\]/{f=1;next} /\[*\]/{f=0} f' | grep $option | grep '=')
if [ ${#src} -eq 0 ] ; then #沒有對應的 option 直接添加
local last=$(cat -n $fid | awk '/\['$section'\]/{f=1;next} /\[*\]/{f=0} f' | tail -n 1)
last=$(echo $last | cut -d' ' -f1)
sed -i "${last}a\ $option=$value" $fid
return 0
fi
local old_value=$(echo $src | cut -d'=' -f2 |cut -d'#' -f1 | cut -d';' -f1 )
local idx=$(echo $src | cut -d' ' -f1)
local newcontext="$(cat $fid|sed -n "${idx}p" | sed "s/$old_value/$value/" | awk '{gsub(/^\s+|\s+$/, "");print}')"
sed -i "${idx}c\ $newcontext" $fid
return 0
fi
fi
}
WriteIni test.ini s3 Go baby
test $? -eq 0 && echo "寫入成功" || echo "寫入失敗"
```
# fish shell函數讀取
```shell
#!/usr/bin/env fish
#根據Section和Option讀取ini文件
#you can use :
# readini filepath
# readini filepath section
# readini filepath section option
function readini --description 'Read ini file'
set fid $argv[1]
test ! -f $fid && echo "不存在文件$fid" && return 2
if test (count $argv) -eq 3
set section $argv[2]
set option $argv[3]
set src (cat $fid | awk '/\['$section'\]/{f=1;next} /\[*\]/{f=0} f' | #找出section下的所有內容
grep $option | # 匹配option的行
grep '=' | # 看看是不是存在=
cut -d'=' -f2| # 獲取對應的值
cut -d'#' -f1| # 去除注釋
cut -d';' -f1| #去除注釋
awk '{gsub(/^\s+|\s+$/, "");print}') #去掉最前面的空格
echo $src
test (count $src) -eq 0 && echo "Usage : ReadIni FilePath [Section] [Option]" && return 2 || return 0 #讀取到有效數據 返回狀態碼0
else if test (count $argv) -eq 2 #參數解析
set section $argv[2]
cat $fid | awk '/\['$section'\]/{f=1;next} /\[*\]/{f=0} f' |grep '=' |cut -d'#' -f1|cut -d';' -f1 | awk '{gsub(/^\s+|\s+$/, "");print}'
if test (cat $fid | awk '/\['$section'\]/{f=1;next} /\[*\]/{f=0} f' |grep '='| wc -l) -eq 0
return 2
else
return 0
end
else if test (count $argv) -eq 1
cat $fid | grep '=\|\[*\]' | cut -d'#' -f1|cut -d';' -f1
else
echo " Usage : ReadIni FilePath Section Option"
return 2
end
end
```
- 圖片處理
- 調整圖片像素大小
- Python控制攝像頭拍照
- 文件操作
- 提取文件名,擴展名
- 查找文件
- ls列出目錄,文件
- shell解析json串
- 讀取文件第n行內容
- 將變量寫入文件和從文件讀取變量的一中方法
- shell操作二進制文件
- 命令行將ppt轉換為pdf
- python讀取串口數據
- 查最近修改的文件
- awk的一些操作
- 輸入輸出
- 判斷輸入是否為數字
- 獲取腳本輸入的第 i 個參數
- column實現輸出列表對齊
- 串口調試腳本
- 按鍵實時檢測
- 網絡腳本
- 基于Python的TCP客戶端
- bash將字符轉換為urlencode
- 掛載遠程文件夾到本地
- 其他功能
- shell隨機產生某一個范圍內的整數
- 刪除、替換字符串中指定的字符
- 獲取時間日期并打印
- 字符串反轉
- 實用功能
- 自定義函數模板
- shell中包含另一個腳本文件實現include的方法
- Bash下實現自定義指令的幾種方法
- 根據文件類型自動執行腳本
- 命令行運行matlab
- 項目引導main.sh腳本
- 新建文件模板腳本
- bash實現讀取和改寫ini文件
- 添加當前路徑到fish shell環境變量
- 查詢進程并殺死進程
- 帶界面的身份驗證
- 常用軟件
- 基本軟件
- 我喜歡的軟件
- 自用帶有界面的系統修復工具-repair
- 解析xml文件