Làm thế nào để gán kết quả của sed cho biến


9

Dưới đây là bản sao hoàn chỉnh của bản demo mà tôi đang sử dụng để tìm ra sedlệnh để loại bỏ khoảng trắng trong tên người và nén nó xuống để không có khoảng trắng.

Một khi điều này được thực hiện, tôi muốn gán nó cho biến compsau đó tôi có thể sử dụng lại nó sau này trong tập lệnh. Ở đây tôi chỉ đang cố gắng để echonó đến thiết bị xuất chuẩn để tôi có thể thấy nó hoạt động.

Nếu tôi chạy tập lệnh và nhập tên của tôi Ronald McDonaldthì kết quả tôi nhận được là RonaldMcDonald}với dấu ngoặc nhọn đó ở cuối tên của anh ấy hoặc bất cứ điều gì tôi nhập vào.

Làm thế nào để tôi làm cho nó hoạt động, để kết quả không nối }vào mặt sau của văn bản được chỉ định.

#!/bin/bash

function readName {
    echo "Enter your full name:"
    read fullName
    clear
}    # end readName

function cmprsName {
    comp={ echo "$fullName" } | sed 's/ //g'
}    # end cmprsName

function sayItNow {
    echo $comp
}    # end sayItNow

function allTogether {
    readName
    cmprsName
    sayItNow
}    #end allTogether

case $1 in
        -h | --help )           allTogether
                                exit
                                ;;
        * )                     echo "$0 -h"
                                exit 1
esac

Câu trả lời:


13

Bạn phải sử dụng thay thế lệnh cho việc này, tức là thay vì

comp={ echo "$fullName" } | sed 's/ //g'

cái gì đó như

comp=$(echo "$fullName"  | sed 's/ //g')

hoặc là

comp=`echo "$fullName"  | sed 's/ //g'`

4
Có lẽ nên lưu ý rằng $(..)cú pháp được ưu tiên hơn `..`cú pháp cũ hơn vì lý do dễ đọc và lồng nhau.
evilsoup
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.