簡體   English   中英

使用bash從Txt文件設置用戶名和密碼

[英]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)

grepsed 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' )

grepcut 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM