# 변수값을 대입할땐 기본적으로 정수의 경우 쿼테이션x, 문자열의 경우 쿼테이션o

# 더블 쿼테이션

#!/bin/bash

# 변수 선언방법
itemNumber=1       # 정수
itemName1=name     # 문자열도 기본적으로 정수와 같이 감싸지 않아도 된다
itemName2="name"   # 문자열
itemName3="name : ice"  # 이와같이 공백, 특수문자가 있는경우 감싸지않으면 에러가 발생한다
keyword="ice*.txt"      # ice로 시작하는 텍스트 파일 검색, 특수문자가 있으므로 감싸야한다
dir="home/name/test"


# 변수 호출방법

# 특수문자가 있는 keyword변수에 특수문자가 있으므로 에러가 발생
Files=$(find ${dir} -name ${keyword} -exec basename {} \;)

# 특수문자가 있는 keyword변수를 쿼테이션으로 감쌋기 때문에 정상처리
Files=$(find ${dir} -name "${keyword}" -exec basename {} \;)

 

# 싱글 쿼테이션

#!/bin/bash

# 변수 선언방법
itemNumber=1       # 정수
itemName1=name     # 문자열도 기본적으로 정수와 같이 감싸지 않아도 된다
itemName2="name"   # 문자열
itemName3="name : ice"  # 이와같이 공백, 특수문자가 있는경우 감싸지않으면 에러가 발생한다
keyword="ice*.txt"      # ice로 시작하는 텍스트 파일 검색, 특수문자가 있으므로 감싸야한다
dir="home/name/test"


# 변수 호출방법
# 더블 쿼테이션 안에서는 선언된 변수값으로 치환되어 출력된다
echo "테스트 : ${itemName2} "  # 테스트 : name 

# 싱글 쿼테이션 안에서 변수를 선언해도 치환이 발생하지않고 문자열 그대로 출력된다
echo '테스트 : ${itemName2} '  # 테스트 : ${itemName2}

'Programming > Shell Script' 카테고리의 다른 글

[bash] Shell Script 기본적인 코드 작성법  (0) 2023.07.10
[Bash] Shell Script 문법  (0) 2023.07.05
[Bash]Shell Script 기초  (0) 2023.07.04

# 변수 작성후 출력(변수명과 값사이에 =는 공백이 없어야 한다)

#!/bin/bash

item="ice cream"

echo "${item} 구매완료"

 

 

# 함수 작성후 호출(function은 생략이 가능하다)

#!/bin/bash

# 다른 언어와 다르게 인수가 있어도 함수괄호 안에는 아무것도 입력하지않음
purchase(){
item=$1
echo "${item}을 장바구니에 넣었습니다"

return 0

}

# main
# 함수 호출
purchase "아이스크림"
result=$?  # 함수 호출후 바로 아래에 $?로 함수리턴값을 받을수 있다

# 함수 결과값을 판단
if [ result -eq 0 ]; then
    echo "문제없음"
    exit 0
else
    echo "문제있음"
    exit 1
fi

 

# 프로그램 실행

#!/bin/bash

# 다른프로그램 호출
sh home/user/itemDelete.sh "iceCream"
result=$?  # 함수와 마찬가지로 호출후 바로 아래에 $?로 함수리턴값을 받을수 있다

# 함수 결과값을 판단
if [ result -eq 0 ]; then
    echo "문제없음"
    exit 0
else
    echo "문제있음"
    exit 1
fi

 

# 다른유저권한으로 프로그램 실행(외부 프로그램)

#!/bin/bash

# 다른유저로 전환해 해당프로그램을 실행
# 전환한 유저의 환경변수를 이용하는 경우 -를 추가한다
echo "password" | "ID" -c "sh home/user/itemDelete.sh iceCream"
# echo "password" | "ID" - -c "sh home/user/itemDelete.sh iceCream"
result=$?  # 호출후 바로 아래에 $?로 함수리턴값을 받을수 있다

# 함수 결과값을 판단
if [ result -eq 0 ]; then
    echo "문제없음"
    exit 0
else
    echo "문제있음"
    exit 1
fi

 

# 다른유저권한으로 프로그램 실행(내부 작성)

#!/bin/bash

purchase(){
item=$1
echo "${item}을 장바구니에 넣었습니다"
return 0
}

# 함수를 환경변수로 내보냄
export -f purchase

# 다른유저로 전환해 해당프로그램을 실행
# -를 넣지않고 환경변수를 유지
echo "password" | "ID" -c "

# 10행에서 내보낸 환경변수 호출
purchase "아이스크림"
result=$?  # 함수 호출후 바로 아래에 $?로 함수리턴값을 받을수 있다

# 함수 결과값을 판단
if [ result -eq 0 ]; then
    echo "문제없음"
    exit 0
else
    echo "문제있음"
    exit 1
fi

"
result=$?  # 호출후 바로 아래에 $?로 함수리턴값을 받을수 있다

# 함수 결과값을 판단
if [ result -eq 0 ]; then
    echo "문제없음"
    exit 0
else
    echo "문제있음"
    exit 1
fi

 

# 함수의 리턴값은 정수만 가능하다(문자열 리턴 불가능)

#!/bin/bash

# 정수값을 반환
purchase(){
item=$1
echo "${item}을 장바구니에 넣었습니다"

return 0 # 대개 0: 정상 1: 오류로 취급한다

}

# 문자열을 반환(에러가 발생)
purchase(){
item=$1
echo "${item}을 장바구니에 넣었습니다"

return "정상"

}


# 문자열을 반환하고 싶을때에는 전역변수에 값을 할당하는 식으로 반환이 가능하다

result=""

purchase(){
item=$1
echo "${item}을 장바구니에 넣었습니다"
result="정상"

return 0

}

'Programming > Shell Script' 카테고리의 다른 글

[Bash] 변수 취급방법  (0) 2023.07.12
[Bash] Shell Script 문법  (0) 2023.07.05
[Bash]Shell Script 기초  (0) 2023.07.04

변수선언방법

#!/bin/bash

#변수
test1=hello
test2=world

echo ${test1} ${test2}

#배열
test3=("kim" "han" "lee")

echo ${test3[@]}

#배열추가
test3+=("shin")

echo ${test3[@]}

 

비교 연산자

[ -z ] : 문자열의 길이가 0이면 참
[ -n ] : 문자열의 길이가 0이 아니면 참
[ -eq ] : 값이 같으면 참
[ -ne ] : 값이 다르면 참
[ -gt ] :  값1 > 값2
[ -ge ] : 값1  >= 값2
[ -lt ] : 값1 < 값2
[ -le ] : 값1 <= 값2
[ -a ] : &&연산과 동일 and 연산
[ -o ] : ||연산과 동일 xor 연산
[ -d ] : 파일이 디렉토리면 참
[ -e ] : 파일이 있으면 참
[ -L ] : 파일이 심볼릭 링크면 참
[ -r ] : 파일이 읽기 가능하면 참
[ -s ] : 파일의 크기가 0 보다 크면 참
[ -w ] : 파일이 쓰기 가능하면 참
[ -x ] : 파일이 실행 가능하면 참
[ 파일1 -nt 파일2 ]  : 파일1이 파일2보다 최신파일이면 참
[ 파일1 -ot 파일2 ]  : 파일1이 파일2보다 이전파일이면 참
[ 파일1 -ef 파일2 ] : 파일1이 파일2랑 같은 파일이면 참

 

if문

#!/bin/bash

number1=1

#숫자를 비교할때는 조건식을 사용
if [number -eq 1]; then
    echo ""
fi
if [number -ne 1]; then
    echo ""
fi


number2="1"
#문자를 비교할때는 연산자를 사용
if [number = "1"]; then
    echo ""
fi

if [number =! "1"]; then
    echo ""
fi

#변수끼리의 비교에서도 아래와 같다
test1="123"
test2="123"
test3=123
test4=123

#문자열 변수끼리 비교
if [${test1} = ${test2}]; then
    echo ""
fi

#정수형 변수끼리 비교
if [${test3} -eq ${test4}]; then
    echo ""
fi

#정수형 변수와 문자형 변수  비교
if [${test1} = "${test3}"]; then
    echo ""
fi


#and
if [${test3} -eq ${test4} -a ${test1} = "${test3}"]; then
    echo ""
fi

#or
if [${test3} -eq ${test4} -o ${test1} = "${test3}"]; then
    echo ""
fi

 

for문

#!/bin/bash

#배열을 차례대로 출력
array=(1 2 3 4 5)
for value in "${array[@]}"
do
  echo ${value}
done

#1에서 10까지 순차적 출력
for value in {1..10}
do
  echo ${value}
done

#ABC 차례대로 출력
list="A B C" 
for value in ${list}
do
  echo ${value}
done

 

while문

#!/bin/bash

number=10

#10까지 +1씩 하면서 반복
while [ ${number} -eq 10 ]
do
    echo ${number}
    number=$((${numver}+1))
done

 

'Programming > Shell Script' 카테고리의 다른 글

[Bash] 변수 취급방법  (0) 2023.07.12
[bash] Shell Script 기본적인 코드 작성법  (0) 2023.07.10
[Bash]Shell Script 기초  (0) 2023.07.04

 

시작은 최상단에 아래의 명령어를 서술하는 것으로 시작한다

#!/bin/bash

 

ls,ll : 현재 디렉토리에 있는 파일을 화면에 출력한다

mkdir : 새로운 디렉토리를 생성한다

mkdir newfile #현재 디렉토리에 newfile생성
mkdir -p /home/user/newfile #하위 디렉토리까지 모두 생성
mkdir -m 775 newfile #현재 디렉토리에 모든 유저가 접근가능한 newfile생성

echo : 문자열을 화면에 출력한다

hello=hi!
echo ${hello} 안녕하세요

cat : 파일의 내용을 화면에 출력한다

cat helloworld.txt

rm : 파일을 삭제한다

rm test.txt

 

pwd : 현재 디렉토리 경로를 알려준다

mv : 파일을 이동시킨다

mv /home/user/test.txt /home/kim #이동할파일 이동시킬 위치

cd : 해당 디렉토리로 이동한다

cd /home/user  #/home/user으로 이동
cd ..  #상위디렉토리로 이동

./ 파일명 or  확장자 파일명 : 파일실행

./ test.sh 
sh test.sh

sh /home/user/test.sh

'Programming > Shell Script' 카테고리의 다른 글

[Bash] 변수 취급방법  (0) 2023.07.12
[bash] Shell Script 기본적인 코드 작성법  (0) 2023.07.10
[Bash] Shell Script 문법  (0) 2023.07.05

https://developer.salesforce.com/docs/atlas.ja-jp.apexcode.meta/apexcode/apex_class_System_Queueable.htm

 

Queueable インターフェース | Apex 開発者ガイド | Salesforce Developers

これは、Queueable インターフェースの実装例です。この例の execute メソッドは、新規取引先を挿入します。 public class AsyncExecutionExample implements Queueable { public void execute(QueueableContext context) { Account

developer.salesforce.com

Queueable インターフェース

監視可能な Apex ジョブの非同期実行を有効にします。

名前空間

System

使用方法

Apex を非同期ジョブとして実行するには、Queueable インターフェースを実装し、execute メソッドの実装に処理ロジックを追加します。

Queueable インターフェースを実装するには、最初に implements キーワードでクラスを次のように宣言する必要があります。
 
 
 
public class MyQueueableClass implements Queueable {
次に、クラスで次のメソッドの実装を提供する必要があります。
 
 
 
public void execute(QueueableContext context) {
    // Your code here
}

クラスとメソッドの実装は、public または global として宣言する必要があります。

クラスを非同期実行するために送信するには、Queueable インターフェースのクラス実装のインスタンスを次のように渡して System.enqueueJob をコールします。

 
 
 
ID jobID = System.enqueueJob(new MyQueueableClass());

Queueable のメソッド

Queueable のメソッドは次のとおりです。

execute(context)

キュー可能ジョブを実行します。

署名

public void execute(QueueableContext context)

パラメータ

context型: QueueableContextジョブ ID が含まれます。

戻り値

型: Void

Queueable の実装例

これは、Queueable インターフェースの実装例です。この例の execute メソッドは、新規取引先を挿入します。
 
 
 
public class AsyncExecutionExample implements Queueable {
    public void execute(QueueableContext context) {
        Account a = new Account(Name='Acme',Phone='(415) 555-1212');
        insert a;        
    }
}
このクラスをジョブとしてキューに追加するには、次のメソッドをコールします。
 
 
 
ID jobID = System.enqueueJob(new AsyncExecutionExample());

キュー可能クラスを実行のために送信すると、ジョブはキューに追加され、システムリソースが使用可能になると処理されます。ジョブの状況を監視するには、プログラムで AsyncApexJob を照会するか、ユーザインターフェースの [設定] から、[クイック検索] ボックスに「Apex ジョブ」と入力して [Apex ジョブ] を選択します。

送信したジョブに関する情報を照会するには、System.enqueueJob メソッドが返したジョブ ID で絞り込んで AsyncApexJob に対する SOQL クエリを実行します。次の例では、前の例で取得された jobID 変数を使用します。

 
 
 
AsyncApexJob jobInfo = [SELECT Status,NumberOfErrors FROM AsyncApexJob WHERE Id=:jobID];

future ジョブと同様、キュー可能ジョブはバッチを処理しません。そのため、処理されたバッチ数と合計バッチ数は常に 0 です。

キュー可能ジョブのテスト

次の例では、テストメソッドでキュー可能ジョブの実行する方法を示します。キュー可能ジョブは、非同期プロセスです。このプロセスがテストメソッド内で実行されるようにするには、ジョブを Test.startTest  Test.stopTest 間のブロック内でキューに送信する必要があります。システムは、テストメソッドで開始されたすべての非同期プロセスを、Test.stopTest ステートメントの後に同期して実行します。次に、テストメソッドは、ジョブで作成された取引先を照会して、キュー可能ジョブの結果を検証します。
 
 
 
@isTest
public class AsyncExecutionExampleTest {
    static testmethod void test1() {
        // startTest/stopTest block to force async processes 
        //   to run in the test.
        Test.startTest();        
        System.enqueueJob(new AsyncExecutionExample());
        Test.stopTest();
        
        // Validate that the job has run
        // by verifying that the record was created.
        // This query returns only the account created in test context by the 
        // Queueable class method.
        Account acct = [SELECT Name,Phone FROM Account WHERE Name='Acme' LIMIT 1];
        System.assertNotEquals(null, acct);
        System.assertEquals('(415) 555-1212', acct.Phone);
    }
}
 

メモ

キュー可能 Apex ジョブの ID はテストコンテキスト内では返されません。実行テストで System.enqueueJob  null を返します。

'Programming > Apex' 카테고리의 다른 글

[Apex] 가버너 제한  (0) 2022.05.22

+ Recent posts