Điểm:0

Làm cách nào để "cd $ biến" khi biến cố thêm "\" trước khoảng trắng (đường dẫn chứa khoảng trắng)?

lá cờ cn

Tập lệnh bash của tôi đăng ký đường dẫn riêng để nó có thể quay lại thư mục của chính nó sau khi thực hiện đĩa CD ở đâu đó (đại loại là nếu nó khám phá một khu rừng khác và có thể di dời ngôi nhà của mình).

Và nếu đường dẫn có khoảng trắng, tôi đã sử dụng sed thêm vào \ trước mọi không gian.

Nhưng khi sử dụng cd $SCRIPTPATH đến biến này:

./newsed.sh: 11: cd: không thể cd vào /media/daniell/B/bkp/ST500LM012\

Nguồn: tin tức.sh:

#!/bin/bash -e

tmp="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
SCRIPTPATH="$(echo "$tmp" | sed 's/ /\ /g')"

tiếng vang "$SCRIPTPATH"

ls
đĩa CD
ls
cd $SCRIPTPATH
ls

tiếng vang $SCRIPTPATH tạo ra một đường dẫn bình thường (/media/daniell/B/bkp/ST500LM012\ HN-M500MBB\ Dat/0/ok/Pendrive/flshdrive/0.Floflis-DNA/layers/soil) mà tôi có thể sao chép và cd vào đó theo cách thủ công và hoạt động; nhưng khi đĩa CD'ing trực tiếp vào biến (cd $SCRIPTPATH) nó bị treo ngay sau khi \.

lá cờ hr
*"Và nếu đường dẫn có khoảng trắng, tôi đã sử dụng sed để thêm \ trước mỗi khoảng trắng."* bạn có thể tránh phải làm điều đó hoàn toàn bằng cách trích dẫn chính xác phần mở rộng biến ex. `cd "$biến"`
lá cờ cn
@steeldriver Cảm ơn bạn, đầu ra đã được cải thiện. Nhưng: `./newsed.sh: 11: cd: không thể cd vào /media/daniell/B/bkp/ST500LM012\ HN-M500MBB\ Dat/0/ok/Pendrive/flshdrive/0.Floflis-DNA/layers /đất` ?
lá cờ hr
Bạn vẫn đang thoát khỏi khoảng trắng bằng dấu gạch chéo ngược với sed phải không? Nếu vậy - đừng.
lá cờ cn
@steeldriver Hiểu rồi! Cảm ơn rất nhiều. Nếu bạn biến nhận xét của mình thành câu trả lời, tôi sẽ đánh dấu đó là câu trả lời đúng/hay nhất.
waltinator avatar
lá cờ it
Đừng bận tâm đến việc thoát dấu cách, chỉ cần trích dẫn phần mở rộng của biến: `cd "$tmp"`.
Điểm:0
lá cờ cn

Sử dụng dấu ngoặc kép xung quanh các biến để ngăn khoảng trắng được coi là dấu phân cách trong trình bao, tức là

cd "$SCRIPTPATH"

sẽ làm việc.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.