簡體   English   中英

如何將星號作為參數傳遞給bash中的另一個腳本

[英]How to pass asterisk as argument to another script in bash

首先,我想確保到現在為止我已經在尋找答案了幾個小時,而且我讀過很多類似的問題,但是沒有一個解決了我的問題。

直截了當:

我在bash中有兩個腳本:一個是“工具”,可以為我做一些事情;第二個是主要的“針對用戶”腳本。 我想將各種模式傳遞給工具腳本(例如“ [A-Za-z0-9] *”或“&”)

這是一些代碼:

#!/bin/bash

SET() {

  wz1=`./PREP2.sh $1 $2 '[0-9A-Za-z]\*'`
  wz2=`./PREP2.sh $1 $2 '&'`

  echo $wz1
  echo $wz2


}
SET $1 $2

如果我在內部聲明模式,則工具腳本實際上是有效的:

line='[0-9A-Za-z]*'

但是當我通過與

'\*'

如果不將“ *”解釋為“顯示目錄中的所有文件”,就無法擺脫“ \\”。

我一直在嘗試在工具內部使用eval,如下所示:

eval echo '$3'

但這沒有用。

完整代碼如下。

用戶腳本:

#!/bin/bash

SET() {
    #echo '[0-9A-Za-z]*'

    wzor1=$(./PREP2.sh "$1" "$2" '[0-9A-Za-z]*')
    wzor2=`./PREP2.sh $1 $2 '&'`

    echo $wzor1 
    echo $wzor2
}

SET $1 $2 $4

工具代碼

#!/bin/bash


PREP2() {
    #echo "$3"
    wzor="`./PREP.sh $1 $2 | tee linie.txt`"
    #tmp="`echo $wzor | sed 's/,/,%/'`"
    #echo $tmp; 

    ./ZAMIEN_WSZYSTKIE_WYSTAPIENIA.sh linie.txt , @%


    #tmp="`echo $wzor | tr '@' '\n x' | tee linie.txt`"
    tmp="`tr '@' '\n x' < linie.txt | tee linie.txt`"
    llini=`echo "$tmp" | wc -l`

    #echo liczba lini $llini

    i=1
    wzor=""
    while [ $i -le $llini ];
    do

        linia="`eval sed -n -e $i\p linie.txt | cut -d '%' -f2`"
        if [ -z "$linia" ];then
        #linia='[0-9A-Za-z]*'

        linia=`eval '$3'`
        #echo $linia
        fi

        if [ $i -ne 1 ];then
            #echo "kolejna wartosc"
            wzor=$wzor\,$linia
        else
            #echo "pierwsza wartosc"
            wzor=$linia 
        fi

        i=`expr $i + 1`
    done
    echo $wzor
    #wynik="`grep -v "$wzor" $1`"
    #echo "$wynik" > $1
    #echo $nowy_wpis >> $1

}

eval echo "$3"
#PREP2 $1 $2 $3

只是為了清除問題,我實際上並沒有進入程序,因為我知道由於我輸入的參數而使其工作很奇怪。

引號,引號,引號和更多引號。 並且更喜歡$()而不是反引號,這樣可以節省一些引用問題。

#!/bin/bash

SET() {

  wz1=$(./PREP2.sh "$1" "$2" '[0-9A-Za-z]*')
  wz2=$(./PREP2.sh "$1" "$2" '&')

  echo "$wz1"
  echo "$wz2"
}
SET "$1" "$2"

(順便說一句:函數名稱全都大寫是不尋常的。這通常是環境變量。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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