วิธีการเพิ่มตัวแปรท้องถิ่นใน Bash


13

ข้อมูล

1
\begin{document}
3

รหัส

#!/bin/bash

function getStart {
        local START="$(awk '/begin\{document\}/{ print NR; exit }' data.tex)"
        echo $START
}

START2=$(getStart)
echo $START2

ซึ่งผลตอบแทนแต่ฉันต้องการ2 3ฉันเปลี่ยนปลายไม่สำเร็จโดยคำตอบนี้เกี่ยวกับฉันจะเพิ่มตัวเลขในสคริปต์ทุบตี :

START2=$((getStart+1))

คุณจะเพิ่มตัวแปรโลคอลในสคริปต์ Bash ได้อย่างไร?


ฉันได้รับ 2 ไม่ใช่ 1 จากรหัส
choroba

ขออภัยความผิดพลาดของฉัน!
LéoLéopold Hertz

1
ปิด: ทำไมawk? sed -n '/begin{document}/{=;q}' data.textสั้นกว่ามาก…
Costas

@Costas ใช่คุณพูดถูก! วันนี้ฉันมีวันที่แย่ในการคิดที่ซับซ้อนเกินไป กำลังคิดตอนนี้สำหรับช่วงเวลาที่เปิดอยู่: unix.stackexchange.com/q/229060/16920คุณช่วยอธิบาย}/{=;q}เรื่องนี้ด้วยคำตอบ / ความคิดเห็นได้ไหม
LéoLéopold Hertz

คำตอบ:


36

ฉันได้รับ2จากรหัสของคุณ อย่างไรก็ตามคุณสามารถใช้เทคนิคเดียวกันสำหรับตัวแปรหรือหมายเลขใด ๆ :

local start=1
(( start++ ))

หรือ

(( ++start ))

หรือ

(( start += 1 ))

หรือ

(( start = start + 1 ))

หรือเพียงแค่

local start=1
echo $(( start + 1 ))

เป็นต้น


สิ่งนี้อาจช่วยได้เช่น: askubuntu.com/questions/385528/…
Bruno Bieri

3

ลอง:

START2=$(( `getStart` + 1 ));

$(( ))บอกทุบตีว่ามันคือการดำเนินการดำเนินการทางคณิตศาสตร์ในขณะที่ backticks บอกทุบตีเพื่อประเมินการแสดงออกที่มีไม่ว่าจะเป็นฟังก์ชั่นที่ผู้ใช้กำหนดหรือการเรียกร้องให้โปรแกรมภายนอกและกลับเนื้อหาของ stdout

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.