第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何從Bash函數(shù)返回字符串值

如何從Bash函數(shù)返回字符串值

吃雞游戲 2019-11-21 14:30:24
我想從Bash函數(shù)返回一個(gè)字符串。我將用Java編寫示例以顯示我想做的事情:public String getSomeString() {  return "tadaa";}String variable = getSomeString();下面的示例在bash中有效,但是有更好的方法嗎?function getSomeString {   echo "tadaa"}VARIABLE=$(getSomeString)字符串 bash 函數(shù)的 返回值
查看完整描述

3 回答

?
繁花如伊

TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊

您可以讓函數(shù)將變量作為第一個(gè)arg,然后使用要返回的字符串修改變量。


#!/bin/bash

set -x

function pass_back_a_string() {

    eval "$1='foo bar rab oof'"

}


return_var=''

pass_back_a_string return_var

echo $return_var

打印“ foo bar rab oof”。


編輯:在適當(dāng)?shù)奈恢锰砑恿艘?hào),以允許字符串中的空格解決@Luca Borrione的評(píng)論。


編輯:作為演示,請(qǐng)參閱以下程序。這是一個(gè)通用的解決方案:它甚至允許您將字符串接收到局部變量中。


#!/bin/bash

set -x

function pass_back_a_string() {

    eval "$1='foo bar rab oof'"

}


return_var=''

pass_back_a_string return_var

echo $return_var


function call_a_string_func() {

     local lvar=''

     pass_back_a_string lvar

     echo "lvar='$lvar' locally"

}


call_a_string_func

echo "lvar='$lvar' globally"

打印:


+ return_var=

+ pass_back_a_string return_var

+ eval 'return_var='\''foo bar rab oof'\'''

++ return_var='foo bar rab oof'

+ echo foo bar rab oof

foo bar rab oof

+ call_a_string_func

+ local lvar=

+ pass_back_a_string lvar

+ eval 'lvar='\''foo bar rab oof'\'''

++ lvar='foo bar rab oof'

+ echo 'lvar='\''foo bar rab oof'\'' locally'

lvar='foo bar rab oof' locally

+ echo 'lvar='\'''\'' globally'

lvar='' globally

編輯:這表明原始變量的值是在功能可用,進(jìn)行了錯(cuò)誤@Xichen李在評(píng)論批評(píng)。


#!/bin/bash

set -x

function pass_back_a_string() {

    eval "echo in pass_back_a_string, original $1 is \$$1"

    eval "$1='foo bar rab oof'"

}


return_var='original return_var'

pass_back_a_string return_var

echo $return_var


function call_a_string_func() {

     local lvar='original lvar'

     pass_back_a_string lvar

     echo "lvar='$lvar' locally"

}


call_a_string_func

echo "lvar='$lvar' globally"

這給出了輸出:


+ return_var='original return_var'

+ pass_back_a_string return_var

+ eval 'echo in pass_back_a_string, original return_var is $return_var'

++ echo in pass_back_a_string, original return_var is original return_var

in pass_back_a_string, original return_var is original return_var

+ eval 'return_var='\''foo bar rab oof'\'''

++ return_var='foo bar rab oof'

+ echo foo bar rab oof

foo bar rab oof

+ call_a_string_func

+ local 'lvar=original lvar'

+ pass_back_a_string lvar

+ eval 'echo in pass_back_a_string, original lvar is $lvar'

++ echo in pass_back_a_string, original lvar is original lvar

in pass_back_a_string, original lvar is original lvar

+ eval 'lvar='\''foo bar rab oof'\'''

++ lvar='foo bar rab oof'

+ echo 'lvar='\''foo bar rab oof'\'' locally'

lvar='foo bar rab oof' locally

+ echo 'lvar='\'''\'' globally'

lvar='' globally


查看完整回答
反對(duì) 回復(fù) 2019-11-21
?
弒天下

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超8個(gè)贊

上面的所有答案都忽略了bash手冊(cè)頁(yè)中所述的內(nèi)容。


在函數(shù)內(nèi)部聲明的所有變量將與調(diào)用環(huán)境共享。

所有聲明為local的變量將不會(huì)共享。

范例程式碼


#!/bin/bash


f()

{

    echo function starts

    local WillNotExists="It still does!"

    DoesNotExists="It still does!"

    echo function ends

}


echo $DoesNotExists #Should print empty line

echo $WillNotExists #Should print empty line

f                   #Call the function

echo $DoesNotExists #Should print It still does!

echo $WillNotExists #Should print empty line

并輸出


$ sh -x ./x.sh

+ echo


+ echo


+ f

+ echo function starts 

function starts

+ local 'WillNotExists=It still does!'

+ DoesNotExists='It still does!'

+ echo function ends 

function ends

+ echo It still 'does!' 

It still does!

+ echo

同樣在pdksh和ksh下,此腳本也可以實(shí)現(xiàn)!


查看完整回答
反對(duì) 回復(fù) 2019-11-21
?
波斯汪

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊

我沒(méi)有更好的方法了。Bash僅知道狀態(tài)代碼(整數(shù))和寫入標(biāo)準(zhǔn)輸出的字符串。


查看完整回答
反對(duì) 回復(fù) 2019-11-21
  • 3 回答
  • 0 關(guān)注
  • 748 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)