[英]Set User Name and Password from Txt file using bash
我有以下格式的env.txt文件:
lDRIVER={ODBC Driver 13 for SQL Server};
PORT=1433;
SERVER=serveename;
DATABASE=db;
UID=username;
PWD=password!
我有一個git bash腳本(.sh),需要該文件的UID和PWD。 我正在考慮通過最后/第二個最后的行號來獲取它。 我該如何做/有沒有更好的方法(例如尋找UID和PWD並以這種方式分配git bash變量)
有很多方法可以做到這一點。 您可以使用我個人使用的awk
,因為它有點像x-acto刀用於這種事情:
uid=$(awk -F"[=;]" '/UID/{print $2}' env.txt)
pwd=$(awk -F"[=;]" '/PWD/{print $2}' env.txt)
或grep
和sed
。 sed
很不錯,因為它可以讓您非常詳細地了解要從該行中剪切的信息,但是regex具有學習曲線:
uid=$(grep "UID" env.txt | sed -r 's/^.*=(.*)(;|$)/\1/g' )
pwd=$(grep "PWD" env.txt | sed -r 's/^.*=(.*)(;|$)/\1/g' )
正如@JamesK在評論中指出的那樣,您可以使用sed
並讓它代替grep
進行搜索。 超級好,我一定會選擇它而不是grep | sed
grep | sed
。
uid=$(sed -nr '/UID/s/^.*=(.*)(;|$)/\1/gp' )
pwd=$(sed -nr '/PWD/s/^.*=(.*)(;|$)/\1/gp' )
或grep
並cut
。 Bleh ...我們都可以做得更好,但是有時候我們只是想grep
and cut
而不必去考慮:
uid=$(grep "UID" env.txt | cut -d"=" -f2 | cut -d";" -f1)
pwd=$(grep "PWD" env.txt | cut -d"=" -f2 | cut -d";" -f1)
我絕對不會按行號去。 看起來像和odbc.ini文件,每個odbc條目中列出的參數順序無關。
首先將PWD
重命名為PASSWORD
。 PWD
是外殼程序使用的特殊變量。 更好的是對所有自己的變量使用小寫的變量名。
如果密碼沒有特殊字符(空格,$,),則可以
source env.txt
如果密碼有特殊要求,請考慮編輯env.txt
:
lDRIVER="{ODBC Driver 13 for SQL Server}"
PORT="1433"
SERVER="serveename"
DATABASE="db"
UID="username"
PASSWORD="password!"
當您僅對小寫uid和passwd感興趣時,請考慮僅選擇感興趣的字段並將關鍵字更改為小寫
source <(sed -rn '/^(UID|PWD)=/ s/([^=]*)/\L\1/p' env.txt)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.