Как заставить скрипт BASH работать только в определенном каталоге? - PullRequest
1 голос
/ 31 января 2011

моя домашняя работа по Linux требует, чтобы я написал скрипт, который запускается, только если пользователь находится в ~ / tareas / sesion_3, поэтому я предполагаю, что ему сначала нужно ввести cd / ~ / tareas / sesion_3, а затем команды скрипта будут выполняться, еслине будет эхом "ты не на / ~ / tareas / sesion_3".В сценарии мне нужно сделать больше каталогов, и они могут быть созданы только в этом месте.

Как мне создать такое условие?

Я ценю каждый битребята, помочь вам!

Ответы [ 3 ]

4 голосов
/ 31 января 2011

Вы можете использовать $PWD, чтобы увидеть, из какого родительского каталога был запущен скрипт, хотя он уже будет расширен ~.Таким образом, вы можете сделать что-то вроде:

if [[ "$PWD" == "/home/tareas/session_3" ]]; then
  # do stuff if true
else
  # do stuff if false
fi
0 голосов
/ 31 января 2011

Если вам нужно узнать, находитесь ли вы по крайней мере в данного каталога, но, возможно, в дочернем каталоге в нем, grep будет хорошим другом для:

echo `pwd` | grep ^/starting/directory >/dev/null || {
       echo "You aren't in the proper place .."
       exit 1
}

Пример работы:

tpost@tpost-desktop:~$ echo `pwd` | grep ^/home/tpost >/dev/null || echo nope
tpost@tpost-desktop:~$ echo `pwd` | grep ^/home/foo >/dev/null || echo nope
nope

Карат (^) указывает grep, чтобы он соответствовал строке, которая начинается с того, что вы предоставляете.

0 голосов
/ 31 января 2011

мой ответ:

#!/bin/sh

TARGET_DIR = "~/tareas/sesion_3" 

function do_something(){
    #do something
}

function do_something_v2(){
    #create some dirs
}

if [ `pwd` == "$TARGET_DIR" ] ; then
    do_something
else 
    do_something_v2

Я надеюсь, что это может помочь вам

* * 1005 ^ _ ^ * * 1006
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...